Previous
Next

Java Server Faces (JSF) nedir?

by Cem Kefeli 17. Mayıs 2016 05:49

Tüm java makalelerime buradan ulaşabilirsiniz...Java

Java Server Faces (JSF) kavramını anlatabilmek için ilk önce Java'nın bu güne kadar sunmuş olduğu önyüz/arayüz dinamik yapılarını incelemek gerekir diye düşünüyorum.

En başa java servlet'ler yerleşir ki java servlet'ler 1990'lı yıllardan ve de JDK 1.0'dan bu yana hayatımızdadırlar. Güncel versiyonu 4.0'dır ve en son J2EE 8 ile birlikte duyurulmuştur. Temel olarak sunucuya gelen HTTP isteğini keser, ilgili kod parçacığını çalıştırarak yorumlar, ve de istemciye bir cevap dönerler. Servlet'ler içerisinde java kodları bulunur ve istemciye gönderilecek HTML çıktılar bu kodların içerisinde barındırılırlar. Yani servlet teknolojisinde Java kodu içerisine HTML kodları gömülebilir.

İkinci sırada Java Server Pages (JSP) teknolojisi gelmektedir ki aslında JSP'ler de çalışma mantığı olarak yine servlet'ler üzerine kuruludurlar. Arka planda çalışan aslında bir servlet'tir. Fakat uygulamayı yazan kişi bu arka plandaki durumu görmez. Farkı ise JSP'lerin kodlama mantığının HTML üzerine kurulu olmasıdır. Nasıl ki yukarıda bahsettiğim gibi servlet'lerde java kodları arasında HTML kullanılıyorsa, JSP'lerde de HTML içerisine java kod parçacıkları gömülebilmektedir. HTML öğeleri örneğin formlar, tablolar, imajlar doğrudan JSP içerisindeyer alırlar. JSP'ler, servletlere göre görselliği daha ön plana çıkaran yapılar sunar.

Java Servlet, JSP, JSF Historyt

Şimdi asıl konu olan JSF'lere dönelim. Servler'ler ilk ortaya çıktığı gün, günün ihtiyaçlarını karşılıyorlardı. Bir süre sonra görselliği ön plana alan JSP teknolojisi ortaya çıkıverdi. JSP bir nebze olsun görsellik konusunu ileriye taşıdı ama aranan kan halen bulunamamıştı aslında. JSF'nin duyurulması ile birlikte hem kod katmanına hem de görsel katmana hitap eden bir yapı ortaya çıktı. C#, C++ ya da java gibi dillerle masaüstü uygulaması geliştirenler bilirler, form üzerine yerleştirdiğiniz nesnelere aksiyonlar atayabilirsiniz. Örneğin forma bir buton yeteştirdiniz üzerine çift tıklarsanız butona tıklandığında çalışacak olan listener'a ulaşmış olursunuz. Bu listener, kod bloğu, içerisine buton tıklandığında yapılması istenen işlere ait dilediğiniz gibi kod yazabilirsiniz. İşte JSF ile birlikte masaüstü programlamanın bu güzel görsel yapısı bir nebze olsun WEB ile de buluşmuş oldu. JSF ile birlikte artık hem HTML kod tarafında bir kaynak kodumuz, hem de pure java tarafında bir kaynak kodumuz bulunuyor, ve de framework sayesinde bu ikisi arasında bir etkileşim de mevcut.
Fazlası...

RESTFUL ve SOAP web servisleri

by Cem Kefeli 26. Şubat 2016 01:16

SOAP vs. RESTFULMüşterilere sunulan her bir servisin teknolojik karşılığı olan iş yapan uygulama parçacıklarını da birer servis olarak düşünme fikri hayatımızda daha da yer edinmeye başladıkça artık mimari yapılar da buna göre şekillenmeye başlıyor. Servis temelli mimari yaklışım ile ilgili bahsettiğim konsepti anlatan bir yazıma buradaki linkten (Service Oriented Architecture - SOA) ulaşabilirsiniz.

Bu yazının konusu olan RESTFUL ve SOAP web servisler de servis temelli yaklaşıma hizmet eden çok gözde ve üzerinde yoğunlaşılan yapılar. Her ikisinin de temelde hedefleri aynı. Kendisini çağıran kişinin isteğine uygun işi yapmak, ve yine kendisini çağıran kişiye bir cevap dönmek. İşte bu aşamada ikisi arasındaki farktan söz etmeye başlayabiliriz artık, çünkü birbirinden farklı şekilde cevaplar dönüyor bu iki servis yapısı. Ve tabiki birbirinden farklı şekillerde kabul ediyorlar istekleri.

REST (Representational State Transfer), RESTFUL web servislerin sahip olduğu mimariye verilen isimdir. Yani aslına bakacak olursak SOAP (Simple Object Access Protocol) kavramına illaki bir denklik düşünmek istersek bu denkliğin adı REST değil de RESTFUL olmalıdır. Çünkü REST mimari ile ilgili bir kavram, RESTFULL ise REST mimarisine uygun servisler gibi düşünülmelidir.

RESTFUL servisler HTTP protokolü üzerinden konuşurlar ve SOAP servislere göre daha hızlıdırlar. Yapıları daha hafif ve basittir. Zaten de en cazip yönleri bu servislerin sahip olduğu hafif ve kolay kullanılabilir özellikleridir. Çıktılarını XML ya da JSON olarak istemciye ulaştırırlar. Genel olarak bant genişliği yönünden de avantajlıdırlar çünkü istemciye dönen cevap içerisinde yalnızca içerik ile ilgili tag'lar bulunur, yapı ile ilgili tag'lar bulunmaz. REST stateless'dır, durum bilgisi barındırmadığı için de HTTP header'larda ilave bir bilgi taşınmaz. Fazlası...

Java Memory Yönetimi

by Cem Kefeli 3. Şubat 2016 02:39

En sıkıntılı konulardan birisidir bir uygulamayı geliştirirken ve de canlıya alınması sonrasında karışılaşılan memory problemleri. Eğer geliştirme aşamasında tecrübelerinizden de faydalanarak olası memory problemlerini öngörebilirseniz canlıya çıkış sonrası oluşabilecek problemleri azaltabilirsiniz. Ya da daha geliştime ve test aşamasında bir memory problemi ile karşılaşırsanız, ki genelde uygulama gerçek yük altında çalışmaya başladığında açığa çıkarlar, fix etme imkanınız olur ve şanlısınız demektir.

C/C++ ile uygulama geliştirdiyseniz bilirsiniz ki bellek yönetimini tamamen geliştiriciye bırakır. Geliştirici istediği adresteki istediği bellek gözüne kadar herşeye hakimdir. Örneğin işaretçiler yardımıyla bellek gözlerini dilediği gibi yönetebilirler. Bu durum iyi kodlanmış yazılımlar için daha optimal memory kullanımlarını birlikte getirir. Düşünsenize tasarladığınız yazılımın her bir byte seviyesinde her bir bellek gözüne hakimsiniz ve nerede ne var tamamen biliyorsunuz, işlerinizi ona göre planlıyorsunuz. Ama ya iyi kodlanmamış bir yazılım varsa elinizde? Belki de iyi bir uygulama geliştirici değilsinizdir... Bellek yönetiminin esnekliği yerini bir anda bir kaos ortamına bırakıverir. Belki erişmemeniz gereken, sizin olmayan bir bellek gözlerine erişirmişsiniz ve hata alırsınız. Belki de ayırdığınız bellek alanlarının dışına çıkarsınız çalışma anında ve de yine hata alırsınız...

Bununla birlikte eğer nesle yönelimli (Object Oriented Programming - OOP) bir yazılım dili kullanarak uygulama geliştiriyorsanız sevindirici haberler de vardır. OOP konsepti herşeyi birer nesne olarak ele almak istediği için, nesnelerin varlığından ve de yokluğundan haberdar olmak isterler. Nesneleri doğduğu andan öleceği ana kadar takip ederler. Nesne doğduğu anda ona bir yuvacık sunarlar. Biraz ergenleştiği zaman onu yuvacıktan alıp yeni bir yuvaya nakleder ki yeni doğanlara yer açılsın. Nihayetinde zaman gelip de nesnenin ömrü dolduğunda kalıcı olarak yuvayı bozarlar ve nesne de artık yok olur. Bu yuva ve yuvacıkları bellek bölümleri olarak düşünebilirsiniz. Yuvaların tahsisi konusunu yöneten bir birim de vardır tabiki ve örneğin java için bu işi üstenen Garbage Collector (GC)'dür. GC, neslerin ömrü boyunca bellek işlerinden sorumlu müdürlüktür. Yeri geldiğinde kullanılmayan nesneleri de temizleyerek ilgili belleğin tekrar kullanılabilmesi amacıyla geliştiricinin hizmetine sunar. Geliştirici bu konseptte bellek işleri ile ilgilenmez.

Java Memory Management
Fazlası...

IBM Websphere profil oluşturma

by Cem Kefeli 4. Ocak 2016 05:22

Websphere kurulumu sonrasında uygulama sunucusu yönetimini sağlayacak olan dmgr (Deployment Manager) ve uygulamaların üzerinde çalışacağı serverların (Application Server - App. Server) oluşturulması gerekmektedir. Websphere, dmgr ve app. server için ayrı ayrı profiller üzerinden gerekli yapının oluşturulmasını sağlamaktadır. Dolayısıyla işlevsel bir yapı elde etmek istiyorsak hem dmgr hem de app. server profilleri oluşturmamız gerekmektedir.

İlerleyen bölümlerde adım adım bu işlemlerin nasıl yapıldığına ulaşabilirsiniz;

[websphere@localhost ProfileManagement]$
[websphere@localhost ProfileManagement]$ pwd
/u01/app/websphere/was855/AppServer/bin/ProfileManagement
[websphere@localhost ProfileManagement]$
[websphere@localhost ProfileManagement]$ ls -lrt
total 12
-rwxr-xr-x. 1 websphere websphere  336 Apr 16  2012 wct.sh
-rwxr-xr-x. 1 websphere websphere  336 Apr 16  2012 pmt.sh
drwxr-xr-x. 5 websphere websphere 4096 Dec 23 16:44 eclipse32
[websphere@localhost ProfileManagement]$

IBM Websphere Profile CreationFazlası...

Hakkımda...

Cem KEFELİ

Electronics and
Telecommunication Eng.
devamı...


Son yapılan yorumlar...

Comment RSS

Yasal bir uyarı...

Disclaimer"Bu web sitesinde görmüş olduğunuz bilgilerin, dokümanların ve diğer materyallerin kullanılmasından doğabilecek hiç bir sorumluluktan site sahibi sorumlu tutulamaz. Web sitesi içerisinde yer alan yazılar, yorumlar, resimler ve diğer tüm içerikler yalnızca sahibinin görüşünü yansıtmakta olup içeriğin sahibi kişilerin çalıştığı kurumları bağlayıcı hiç bir nitelik taşımamaktadır. Yapılan tüm alıntılar mutlaka kaynak gösterilerek verilmeye çalışılmaktadır. Web sitesi içerisinde bulunan ilgili materyaller, ilgili yasal kurumlar tarafından uygun görülmemesi durumda kaldırılacaktır."
General