<$BlogRSDURL$>

MobilCRM'i Netbeans 4.0'a aktarmak 

İlk önce genel olarak özgür Java geliştirme ortamlarını özel olarakta Netbeans IDE'sini tanıtmayı düşündüm ama bu konuda internet üzerinden yeterince veri olduğunu düşünerek vaz geçtim[1]. Bunun yerine Netbeans'in 3.6 sürümünde geliştirilmiş olan projelerin 4.0 sürümüne aktarımı konusunda kişisel tecrübelerimi yazmaya kararverdim[2].

Netbeans 4.0 da gelen bir çok özellik içerisinde bence en önemlisi, yeni proje yapısının Apache Ant üzerine kurulmuş olması. Bu sayede uygulama derleme, test, dağıtım hazırlama gibi işlemler hem otomatize edilebilecekler hem de Netbeans'dan bağımsız olarak kullanılabilecekler. Yani NetBeans 4.0 ile geliştirilmiş olan uygulamanın kaynak kodlarını indirip doğrudan Ant kullanarak derlenebilecek. Fakat bu değişiklik 3.6 ile geliştirilmiş olan uygulamaların proje yapısının değişmesi ve 4.0'a uygun hale getirilmesini gerektiriyor. Çünkü 3.6'da IDE içerisine istediğiniz klasör ve .jar'ı tanımlayıp ( mount ) kullanabilirken 4.0'da sadece bir proje dosyasından bahsedebiliyoruz.

MobilCRM uygulaması Netbeans 3.6 ile geliştirilmiş durumdaydı. Masaüstü uygulaması, Yönetici uygulaması, PDA uygulaması olmak üzere üç temel jar'dan oluşmaktaydı ve klasör yapısıda jarlardan bağımsız olarak bir aradaydı. 4.0'a taşırken her jar için bir proje açmak gerekmekteydi ( kendi ant betiklerinizi yazacaksanız buna gerek olmayabilir ). Böylece bir kütüphane projesi de açarak toplam 4 proje açtım : mobilcrm.lib, mobilcrm.desktop, mobilcrm.admin, mobilcrm.pda. Bunların hepsi kendi /MobilCRM/sources/ altında kendi klasör yapılarına sahip oldular.

Kaynak kodları da olmaları gereken projeye göre bölerek gereken klasörlere aktardım. Yani net.sf.mobilcrm.desktop.uibase mobilcrm.lib projesine giderken net.sf.mobilcrm.desktop.backoffice mobilcrm.desktop projesine kopyalandı.

4.0 ile gelen bir diğer yenilik ise her projenin kendi sınıf yollarını ( classpath ) barındırması. Projeleri ilgilendiren kütüphaneler sınıf yolu olarak tanımlandılar. Farklı olarak mobilcrm.desktop ve mobilcrm.admin projelerinin sınıf yoluna mobilcrm.lib/dist/mobilcrm.lib.jar da eklendi. Bu sayede mobilcrm.lib üzerinde yapılan değişiklikler bir kopyalama işlemi gerektirmeden diğer projeler tarafından kullanılabilecekler.

Netbeans 4.0'ın getirdiği avantaj'ı Ant tabanlı dağıtım hazırlama betikleri yazarak kullanmayı düşünüyor ve şu an bu konu üzerinde çalışıyorum.

Referanslar
[1]

[2] Transitioning from NetBeans IDE 3.6 to 4.0

Java ve Raporlar 

JasperReports
Uygulamanızı yazdınız, bütün veri giriş ekranlarınız ( masaüstü ya da web ), iş kurallarınız hazır. Bütün yazılımların temel amacı toplanılan verileri analiz etmek ve evet şimdi sıra geldi raporları hazırlamaya. Ama ne kullanmalı...

Belki en basiti, sorgu sonuçlarınızı düz metin dosyalarına, XML ya da HTML dosyalarına çıkartmak. Ama çoğu zaman bunlar yeterli olmayacak, görsel olarak daha iyi sonuçlar veren baskı sorunları yaşamıyacağınız formatlarda raporlar hazırlamanız gerekecek. Piyasada bir çok çözüm mevcut. En iyilerinden biri ise ^JasperReports.

Bant tabanlı alışıla geldik bir rapor tanımlama içeriğine sahip. Detay, sayfa, rapor, grup, kolon başlık ve bitiş bantları, alt-rapor destekleri bulunuyor.

Rapor tasarımınızı bir XML dosyası olarak hazırlıyorsunuz. Daha sonra ister bu kaynak kodları ya da önceden derlenmiş hallerini kullanarak, raporları veridiğiniz parametrelere göre istediğiniz ortama alabiliyorsunuz. Desteklenen ortamlar içerisinde ekran ve yazıcının dışında PDF, HTML, XLS, CSV ve XML dosyaları da bulunuyor.

Ayrıca rapor değişkenleri tanımlayıp bunlar üzerinde Java dili ile küçük kodlar yazabileceğiniz gibi istediğiniz ya da kendi geliştirdiğiniz bir betik motorunu ( script engine ) rapora tanıtarak raporlarınıza çalışma zamanı betikleri ( run-time scripts ) ekleyebilirsiniz.

Raporlar için veri kaynağı olarak JDBC bağlantısı ile standart veri tabanı sorguları kullanabileceğiniz gibi kendi veri kaynağı implementasyonlarınızı da hazırlayabilirsiniz. Özellikle Hibernate veya benzeri kütüphane kullanıcıları için oldukça önemli bir özellik olarak göze çarpmakta.

OpenReports Designer
Bir motor olarak JasperReports'u kullanabilmek için raporları ya düz metin editörleri ( XML editörleri ) kullanarak XML dosyası üzerinden hazırlamamız ya da JasperReports için kaynak üretebilen görsel araçlar kullanmamız gerekmekte.

Başarılı bir rapor motoru olarak JasperReports için bir çok görsel araç geliştirilmekte fakat bunların içerisinde en oturmuşu ( stable ) olarak OpenReports Designer'ı tavsiye ederim.

Üç sayafalı arayüzünde ister XML editörü kullanarak doğrudan kaynağa müdahale edebilir, ister görsel tasarım araçları ile raporunuzu hazırlayabilirsiniz. Yaptığınız değişikliklerin yansımasını, üçüncü sayfa üzerinde hemen gözlemleyebilirsiniz.

OpenReports
Raporları hazırladık şimdi bunların kullanıcıya sunulması lazım. İhtiyaçlarınız doğrultusunda kendi arayüzlerinizi hazırlayabilirsiniz. Sonuç olarak JasperReports hazırlanmış olan raporlarınızı istediğiniz ortama çıktı olarak vermekte. Swing ile hazırladığınız uygulamalarınızda çağırıp kullanabileceğiniz bir gösterim aracıda bulunmakta.

OpenReports ise web üzerinden rapor sunumunu kolaylaştırmak için gerekli araçları size sunmakta. Özellikle hangi raporu hangi kullanıcıların alabileceği gibi hak kontrolleri ve kullanıcı hak yönetimi konusunda kolaylıklar sunmakta. Rapor parametrelerini web GUI'si üzerinden geçirmek için hazır yöntemler sunmaktadır.


Lisanslar
Teodor Danciu tarafından geliştirilen JasperReports, JasperReports License 1.0 ve GNU Lesser Public License 2.1 ile yayınlanmaktadır.

Open Source Software Solutions tarafından geliştirilen OpenReports ve OpenReports Designer, GNU General Public License ile yayınlanmaktadır.

Referanslar
JasperReports
JasperReports görsel tasarım araçları
Open Source Software Solutions
OpenReports
OpenReports Designer

IzPack 

Java ile platform bağımsız uygulamalar geliştiriyorsunuz, ama kurulum programlarını her platform için ayrı ayrı mı hazırlıyorsunuz? O zaman IzPack'e ihtiyacınız var.

IzPack XML tabanlı bir kurulum tanımı dosyasını kullanarak kurulum paketlerini bir jar olarak hazırlar. Hangi platformda olursa olsun java -jar install.jar diyerek kurulumu gerçekleştirebiliyorsunuz [1]. Sizin için kaldırma ( uninstall ) programını otomatik olarak hazırlayacaktır.

Okuması ve hazırlaması kolay bir doküman tanımına sahip olan kurulum tanım xml'i içerisinde hazır kurulum dialoglarından hangilerini seçtiğinizi, bu dialoglarda ne gibi bilgiler bulunacağını, kurulum paketlerinizi ve bunların opsiyonel olup olmadığını seçebiliyorsunuz.

Ayrıca hazırlamış olduğunuz kurulum setini birden fazla dil desteği ile hazırlayabiliyorsunuz [2].

Kurulum sırasında işletim sistemlerine göre farklı davranış ve görünüm seçenekleri belirleyebiliyorsunuz.

Ayrıca komut satırından çalıştırılan bir uygulama olduğu için Apache ANT derleme işlemlerinize entegre edebilirsiniz.

Bütün bunların ötesinde eğer kurulum sırasında tamamen sizin sisteminize özel bilgiler almak istiyorsanız, kendi dialoglarınızı yazıp sisteme ekleyebiliyorsunuz.

Sistem içerisinde dialoglardan toplanan bilgileri kullanarak, ki kendi özel bilgi alanlarınızı da bu dialoglara ekleyebiliyorsunuz, işletim sistemine özel betikler hazırlayabiliyorsunuz. Özellikle *nix ortamlarında başlangıç betikleri hazırlamak için oldukça gerekli bir yetenek.

GNU GPL lisansı ile dağıtılmaktadır.

[1] Eğer windows kullanıcılarının komut satırından bir kurulum programı çalıştıramıyacağını düşünüyorsanız, JSmooth'u deneyiniz.
[2] Türkçe desteği için gerekli çevirileri yaptım, son bir kontrolden sonra, geliştiricilere göndereceğim.

JSmooth 

Java Uygulamasını Başlatmak
Java uygulamalarını başlatmak belki de java uygulamalarının en önemli sorunu. Bir uygulamanın hangi sınıf yolunu ( classpath )'i kullanacağı çalıştırılacak olan ana sınıfın ( main class ) hangisi olduğu, çalışma parametreleri v.b. komut satırından girilmesi gerekiyor. *nix dünyasında bu işleri kabuk betikleri ( shell script ) yazarak yapmak, Windows'a göre oldukça kolay. Ayrıca bir .bat dosyasını çalıştırdığınızda Windows bu dosyayı arka planda açık bırakıyor ve kullanıcı bu pencereyi kapattığında uygulamanızda kapanıyor.

Tabiki Windows ayarlarıyla oynayarak .jar dosyalarına çift tıklandığında bu dosyaların varsayılan JVM tarafından çalıştırması sağlanabilir fakat bu sadece bir .jar'dan oluşan küçük uygulamalar için bir çözüm olabilir, çünkü sınıf yolun'u tanımlayamayız.

Ayrıca üzerinde çalışılan işletim sisteminin arayüzlerine uyum sağlayan uygulamaları kullanıcıların öğrenmesi ve kullanması daha kolay olacaktır.

JSmooth
Yukarıda sayılan problemlere çözüm ise uygulamayı başlatacak bir Windows uyulaması, .exe yazmaktır. JSmooth'un bize sunduğu çözümde budur.

GUI üzerinden gereken ayarlar bilgilerini toplar ve sonuç .exe üretir. Üretilen exe windows uygulaması olduğu için standart windows yöntemlerini kullanarak çalıştırılabilir.




Son versiyonunda Swing GUI'si JGoodies Looks ve l2fprod bileşenleri kullanılarak modernleştirilmiş durumda.

Sağladığı Olanaklar
  1. Exe ismi ve ikonu ( .ico, .png, .gif ) verilebilir.
  2. sınıf yolu verilebilir.
  3. JVM versiyon kontrolü yapılabilir.
  4. Eğer uygun bir JVM yüklü değil ise kullanıcıya bunun için mesaj verilebilir.

Lisans
JSmooth GPL lisansı ile yayınlanmaktadır. Fakat JSmooth ile üretilen exe'ler istenilen lisansla dağıtılabilir.


Thinlet 

Sevimli, küçük, taşınır bir Java GUI kütüphanesi. Kendisi hepi topu 70k'lık bir jar olarak geliyor ve hemen hemen çalışmadığı hiç bir platform yok. Java 1.1'den Java 5'e sorun çıkarmadan çalışmakta. Donanım olarakta Java 1.1 ve J2ME destekleyen her yerde çalışmakta. Kendilerini HP iPaq'te CrEme ile kullanmış bulunuyorum [2].

En önemli özelliği AWT üzerine kendi çizimlerini yapıyor olması ( leightweight ). Bu sayede playform bağımsızlığını sağlamış ve AWT'nin vermediği görsel bileşenleri ( Tree, Table v.b. ) vermiş oluyor. Hatta bu sayede uygulamaların görünüm ve dokusu da değiştirilebiliyor (skinlet v.b. ).

Bir diğer önemli özelliği ise form tanımlarının koddan yapılabileceği gibi XML dosyaları olarak'ta hazırlanabilecek olmasıdır. Hatta çalışma zamanında ( run-time ) internet üzerinden XML'i indirerek dinamik kullanıcı arayüzleri oluşturulabilir. İçerisinde gömülü olarak çok basit bir XML yorumlayıcı ( parser ) da barındırmaktadır.

Ayrıca, aynı uygulama hem applet hem de application olarak ( tabiki applet "sandbox" kurallarına uyulduğu sürece ) her hangi özel bir şey yapmanıza gerek kalmadan çalıştırılabiliyor.

LGPL lisansı ile yayınlanan bu projeyi özellikle PDA üzerinde çalışacak olan uygulamalar geliştirenlere tavsiye ederim.

Referanslar
[1] Thinlet
[2] CreMe
[3] MobilCRM


Merhaba 

Bu blog'da Java ile olan tecrübelerimi, okuduklarımı, önemli bulduğum küçük notları, kısacası Java dili ile ilgili şeyler yazmayı düşünüyorum.

Cevze, Java yazılım geliştirme ortamı ile ilgili konuları içeren bir Hakan Uygun weblogudur. Yapımında Blogger-Templates'den şablon kullanımıştır. Ayrıca Cezve resmi de mehmetefendi.com'dan alınmıştır.