17 Temmuz 2008 Perşembe

Introduction to Java Enterprise Edition

Java konusundaki ilk sunumumuz olan Introduction to Java Enterprise Edition konusunda izlenimlerimi ve araştırmalarımı paylaşmak adına bu bloğu yazmak istedim.

Temel bir bakış açısıyla meseleyi değerlendirmek gerekirse, bir uygulamayı yazmadan önce o uygulamanın bütün ayrıntılarını ve planlamasını yapmak şüphesiz ki en önemli adımlardan birisini oluşturmaktadır.Javaya bir nevi giriş seviyesinde olan bu paylaşımı özellikle bu konuya dikkat çekmek isteyerek başlamak istedim.

Dünya üzerinde geçerli olan bir diğer önemli faktörse ihtiyaç analizidir.Birçok konuda geçerli olan bu faktör yazılım dünyasının de varoluş ve sürdürebilirlik nedenini oluşturmaktadır.Bu açıdan bu konuda ilerlemek ve büyük işler yapmak istiyorsak mutlaka ihtiyaçların karşılanma derecesini önplanda tutmamız çok önemlidir.

Diyelim ki bütün ayrıntıları hesapladık,planlamamızı yaptık ve gördük ki üzerinde çalışmak istediğimiz uygulama ihtiyaç duyulan bir uygulama kapsamına da giriyor.Bu aşamalardan sonra sözkonusu uygulamayı yazıp piyasa sürmekle işimizin bittiğini düşünüyorsunuz öyle değil mi?Gerçekçi olmak gerekirse asıl iş bundan sonra başlıyor ve bu sürecin çok iyi kontrol edilmesi ve soruna acil çözüm mekanizmaları oluşturulması gerekiyor.Bu kapsamda en fazla karşılaşılan sorunların başında uygulama yazma esnasında çok katmanlı mimariyi kullanmamak geliyor.Bu durum ise modüler çalışmayı sağlamadığından programın bütününde hataları düzeltmek hem zaman anlamında hem de maddi anlamda çok büyük kayıplar yaşatıyor.Ama çok katmanlı mimari yapısını kullanmak bu sorunları çözdüğü gibi,bunun yanında yazılımın çok yönlü ve sistemli geliştirilmesine de bir zemin hazırlamaktadır.

Bu uzun girişten sonra isterseniz ısınmak adına biraz javaya giriş yapalım... Ne dersiniz?

Javanın çalışma mantığından kısaca bahsedelim:

Yazmış olduğunuz java kodu derlendikten sonra bytecode'a çevrilir.Daha sonra JRE(Java Runtime Environment) tarafından sunulan JVM(Java Virtual Machine) vasıtasıyla o anda kullanılan bilgisayarın çalışma mantığına uygun bir yapıya dönüştürülür.Java, platformdan bağımsızdır denilen olayı aslında oluşturan asıl sebep budur.Daha açık bir ifade ile, yazılan kodlar makine üzerinde değil,makinede kurulu olan JVM tarafından çalıştırılır.

Derlenen java kodlarının bytecode çevrilerek JRE ortamına aktarıldığını söylemiştik.Demek ki öncelikle yapmamız gereken şey makinemize bir JRE kurmaktır.
http://java.com/en/download/manual.jsp adresinden işletim sisteminize uygun olan JRE'yi yükleriz.Yükledikten sonra yüklendiği kontrol etmek için başlat->run->cmd yazdıktan sonra karşımıza geken komut satırına
java -version yazdığımızda versiyon bilgileri çıkıyorsa JRE yi doğru ve sorunsuz yüklemişiz demektir.

Buraya kadar yaptıklarımız javanın çalışma ortamının oluşturulması içindi.Daha sonraki aşama ise kodlarımızı derleyebilmek için complier yükleme aşaması... Java desteklediği özelliklere göre complierler 3 kısma ayırmıştır.Bunlara kısaca değinmek gerekirse:

J2ME(Java 2 Micro Edition): Mobil uygulamalar geliştirebilmemiz için vardırlar.Kullanılan fonksiyonlar ve özellikler mobil ortamlara göre sınırlandırılmıştır.

J2SE(Java 2 Standart Edition):
Standart java uygulamaları için kullanırlar.

J2EE(Java 2 Enterprise Edition): Yukarıda bahsedilen derleyicileri desteklemekle birlikte ek olarak çok katmanlı proje geliştirme,servlet,jsp gibi birçok özellikleri de kapsamaktadır.

Çalışmalarımızın çeşitine göre istediğimizi kullanabiliriz ama elbetteki j2EE yi kullanmak ekstra uygulamalar geliştirmelerde avantaj sağlayacağı için şahsen ben bu derleyiciyi kullanmayı tercih ediyorum.

Şimdi sıra geldi J2EE yi yüklemeye... http://java.sun.com/javaee/downloads/index.jsp adresinden ister standart halini isterseniz ek bileşenleriyle birlikteki halini yükleyebilirsiniz
.

Biliyorum bir kodu çalıştırmak için bu kadar mı uğraşılır, daha bitmedi mi diye düşünebilirsiniz ama javanın güzelliklerini ve anavtajlarını da sağlayan bu ek özellikler olduğu için insan javanın bu presedürlerine katlanıyor :) Geldik son adıma...Yazdığımız kodları notepad ile derlerim ben diyen yoksa bir IDE (Integrated Development Environment) edinmemiz gerekiyor.Netbeans,Eclipse..vb çok fazla IDE mevcuttur,ama ben Eclipse kullanıyorum.İnternet üzerinden http://www.eclipse.org/downloads/ adresinden yükleyebilirsiniz.

Eclipse yükledikten sonraki aşamadan biraz bahsetmek gerekirse:

Yukarıdaki adresten yüklediğimiz dosya zip halinde inecektir.Bu dosyayı extract ettikten sonra direk eclipse.exe a tıklayarak programı çalıştırabilirsiniz.İlk çalışmada uygulamalarınızı kayıt edeceğiniz çalışma ortamını(workspace) soracaktır,burayı kendi isteğiniz doğrultusunda belirleyebilirsiniz.

Bu aşamadan sonra karşınıza Eclipse'nin karşılama ekranı çıkacaktır:


Öncelikle Eclipse'e yüklediğimiz JRE'yi tanıtmamız gerekiyor.Bunun için üst menüde bulunan Window-> Preferences a tıkladığınızda karşınıza gelen pencereden Java'ya tıklayın.Çıkan alt menüden Installed JREs kısmından Add diyerek yüklediğiniz dosyadaki JRE yi gösterin.

Karşınıza gelen ekrandan JRE Home kısmından browse ye tıklayarak yüklediğiniz JRE'yi seçiyoruz ve işlemi tamamlıyoruz.Böylece Eclipse in gerekli ayarlamalarını bitirdik.Şimdi sıra geldi Eclipse ile nasıl çalışacağımıza...

Üst menüden File->New Project dedikten ve karşımıza gelen pencerede projemize ismini yazdıktan sonra bir proje oluşturmuş oluyoruz.Javada paketsel çalışma büyük kolaylık sağladığı için şimdiden paketsel çalışmaya alışmamız açısından öncelikle bir paket oluşturalım.Oluşturduğumuz projenin hemen altında olan src ye sağ tıkladıktan sonra New->Package dediğimizde karşımıza gelen penreceden com.uygulama.test gibi makul bir paket ismi tanımlayıp işlemizi bitiyoruz.

Elbette ki daha sonra aşamamız oluşturduğumuz bu paketin içini doldurma aşaması...Oluşturduğunuz paketin üzerine sağ tıklayarak New->Class diyerek bir class tanımlayalım.Örneğin MerhabaDunya olsun...Ve olusturdugumuz sınıfa aşağıdaki kodları yazalım:

public class MerhabaDunya {
public static void main( String[] args)
{
System.out.println("Merhaba java dostu,seni burda görmek güzel...");
}


Sıra geldi kodumuzu çalıştırmaya... Çalıştırmak istediğimiz uygulamanın üzerine sağ tıkladıktan sonra Run As'e gelerek Java Application ile çalıştırabilirsiniz.Alt+Shift+X e bastıktan sonra elinizi çekip J tuşuna basarsanız da aynı işlemi yapmış olursunuz.

Bu giriş kısmından sonra isterseniz bir Dynamic Web Project üzerine bir çalışma yapalım:

Öncelikle bir ear oluşturalım.Ear, enterprise application project uygulamalarında kullanılan, açılımı erterprise application archive olan bir arşivdir.

File->New->Project->J2EE->Enterprise Application Project i seçip next diyoruz.Proje ismimizi SampleEAR olarak belirleyelim.Target Runtime da eğer seçili serveriniz yoksa bir server oluşturmamız gerekiyor.


Server olarak JBoss4.2 kullandım ve
http://www.jboss.org/downloading/ projectId=jbossas&url=http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=548923 adresinden bilgisayarıma yükledim.

Şimdi kaldığımız yerden devam edebiliriz, Target Runtime ın yanında olan new butonuna tıklayarak JBoss4.2v i seçip browse den yukarıdaki linkten yüklediğimiz dosyayı seçip tamam a tıklıyoruz,next e tıklıyoruz.Sadece Generate Deployment Descriptor kısmını işaretleyip finish e tıklıyoruz.Ve böylece ear ımızı oluşturmuş oluyoruz.

Şimdi sıra geldi, EJB uygulamamızı oluşturmaya... EJB, Enterprise Java Beans in kısaltmasıdır.Genel olarak tarif etmek gerekirse EJB,tüm uygulama sunucularında çalışabilen bir bileşen modeldir.Daha net ifade etmek gerekirse veritabanı ile sunum katmanının arasındaki alandır,yani business katman da denilebilir.

Ctrl + N -> EJB -> EJB Project e gelip SampleEJB ismini verip Add project to an EAR ı tikleyip next diyoruz.

Karşımıza gelen pencereden EJB Module ve Java kısmını tikleyip next deyip,bir sonraki adımı da geçerek uygulamamızı oluşturuyoruz.

Sonunda sunum katmanına gelebildik :) Şimdi Dynamic Web Project imizi oluşturacağız.

Ctrl + N -> Web -> Dynamic Web Project i seçerek projemizin ismini SampleWAR olarak tanımlıyoruz.En altta bulunan add to project to an EAR kısmını tikleyip next diyoruz.Karşımıza gelen pencereden java,Dynamic Web Module kısımlarını seçip projemizi oluşturuyoruz.Bu projemiz bir kenarda dursun...

Oluşturduğumuz EJB ye işlerlik kazandırmak ve business katmanında istediklerimizi yaptırmak adına SampleEJB içinde RemoteBusinessInterface adında bir interface oluşturuyoruz ve paketimizi sampleear olarak tanımlıyoruz.

Oluşturulan interface in kodlarını ekte bulabilirsiniz.

İnterface ve beanimizi oluşturduktan sonra SampleWAR uygulamamızın üzerine gelip index.jsp adında bir jsp sayfası oluşturuyoruz.index.jsp nin kodlarını ekte bulabilirsiniz.

Şimdiki adım ise servlet... Servlet,web bağlantılarının sunucu tarafında çalışabilen küçük programlardır diyebiliriz.Servlet sayesinde sunucunun kabiliyetlerini oldukça arttırma imkanına sahibiz.Kısacası servlet ler işin sunum katmanında bulunan bir basamaktır diyebiliriz.

SimpleWAR projesinden new->Servlet diyerek MyServlet adında bir servlet oluşturalım.Oluştururken paketimizi sampleear olarak yazmayı unutmamalıyız.İsmi tanımladıktan sonra next diyoruz.Create Servlet kısmında istersek URL Mapping kısmını edit e tıklayarak istediğimiz şekilde değiştirebilirsiniz,ben /sayHello olarak değiştirdim.Ve Servlet imizi finish e tıklayarak oluşturuyoruz.Oluşturulan MyServlet.java kodlarını ekte bulabilirsiniz.

Ve son olarak SimpleWAR uygulamamızın üzerine gelip Run As->Run on Server diyerek uygulamamızı çalıştırıyoruz.

Dynamic Web Project konusunda örneğimizi de sizinle paylaştıktan sonra kaldığımız yerden devam edelim...Bütün bu yapılanlardan sonra bazı çıkarımlarım oldu,isterseniz sizlerle bunları paylaşmak istiyorum:

*İnterface in javada gerçekten çok önemli bir yeri olduğunu keşfettim.Çünkü,class ların kabiliyetlerini inanılmaz derecede arttırma yeteneklerine sahipler.

*Paket isimlerini ne olursa olsun yazmamız lazım.Çünkü küçük uygulamalarda bile birçok sorunla karşılaşıyorken geliştireceğiniz büyük uygulamalarda ne kadar büyük sorunlara yol açacağını siz düşünün..

*Yukarıda bahsetmedik ama fırsat bulmuşken burda bahsedelim.WEN.INF dosyasının altında bulunan web.xml dosyası uygulamamızın ayarlarını oluşturur.

*WebContent kısmına oluşturduğumuz web sayfalarını koymamız ve bu alışkanlığı kazanmamız standartsak çalışma için ve karmaşık bir çalışma metodundan uzaklaşmamız için çok faydalı olacaktır.

*@ gibi referans tanımlamaları bizi yeni nesne oluşturma işlemlerinden kurtarıyor.Bu servlet in bize sağladığı en güzel şeylerden birisi olarak görebiliriz..

*Biraz dikkatli bakarsak görebileceğimiz üzere,servlet ler tıpki bizim kontrol aracımız gibi davranır.Burda tanımlamalar yaparız ve bu tanımlara göre işlemlere servlet yön verir. Bu kadar uzun bir yazı olmasını beklemiyordum ama laf lafı açtı işte :) Umarım faydalı bir yazı olmaya aday bir yazı olmuştur.

Not: Yanlış veya eksik kısımlar varsa lütfen paylaşınız.

Kodları indirmek için tıklayınız : İndir

Hiç yorum yok: