JSP Sayfasında AJAX Kullanımı

Öncelikle AJAX’ın bir programlama dili değil bir kısaltma olduğunu belirtmek isterim. Özellikle öğrencilerimden “Hocam AJAX ile uygulama yazdım, şöle şöle sıkıntı yaşıyorum” gibi geri dönüşler alıyorum. AJAX ile kod yazılmaz, uygulamamızda AJAX kullanabiliriz.

AJAX, “Asynchronous JavaScript and XML” kelimelerinin baş harflerinden oluşur. Yani bir programlama dili değil, var olan birden fazla teknolojinin birlikte kullanılmasına verilen genel bir isimdir. Genellikle dinamik bir web sayfasındaki bilgileri güncellerken sayfanın tamamının yenilenmesi yerine sadece belirli bir kısmının güncellenmesi için kullanılır.

Ajax kullanabilmek için HTML ya da XHTML ve JavaScript / DOM bilmek gerekir. Bunun yanına biraz da CSS bilgisi eklerseniz çok etkin web sayfaları tasarlayabilirsiniz.

[box type=”info”] Günümüzde altyapı olarak AJAX kullanan birçok framework vardır. Örneğin yukarıda bahsettiğim teknolojilerin hiçbirini bilmeden JSF kullanarak AJAX altyapısı ile sayfalarınızı geliştirebilirsiniz.[/box]

AJAX, Google’ın arama sonuçlarını önermeye başlaması ile ünlü oldu diyebiliriz. En başta Google olmak üzere (Maps, Gmail vs.), Youtube, Facebook, Yahoo gibi firmalar AJAX’ın gücünü görerek bu teknolojiyi neredeyse her yerde kullanmaya başlamışlardır.

Gmail ya da Yahoo hesabınızla giriş yaptığınızı düşünün. O sırada yeni bir mail aldığınızda sayfanızın sadece gelen kutusu güncellenecek, kalan kısmı olduğu gibi kalacaktır. Facebook’ta arkadaşlarınızla konuşurken, mesaj atarken ya da bir içerik paylaşırken de aynı şey söz konusu olacaktır.

Kısaca güzeldir, kullanılmalıdır.

Peki hiç bilmeyen birisi AJAX’ı JSP sayfasında nasıl kullanacak? Bu yazımda en basit haliyle kullanımını göstereceğim.

AJAX’ın temel taşı XMLHttpRequest nesnesidir. Bu nesnenin günümüzde bütün tarayıcılar tarafından desteklendiğini söyleyebiliriz. Sadece Internet Explorer 5 ve 6 versiyonlarında desteklenmemiş onun yerine ActiveXObject nesnesi kullanılmıştır. Fakat Microsoft hatasını geç de olsa anlayarak XMLHttpRequest nesnesi kullanmaya başlamıştır.

XMLHttpRequest nesnesi arka planda sunucudaki kodla (Servlet sınıflarını düşünebilirsiniz) iletişime geçerek istemci tarafındaki bilgilerin güncellenmesini sağlar. Bunu yaparken de web sayfasının sadece belirli bir kısmınının içeriğinin değişmesine olanak sağlar.

Tarayıcının XMLHttpRequest nesnesini destekleyip desteklemediğini anlamak için aşağıdaki gibi bir kod yazabiliriz.

[codesyntax lang=”javascript” lines=”no”]

var xmlhttp;    
if (window.XMLHttpRequest) {   // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
} else {   // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

[/codesyntax]

Sunucuya istek gönderebilmek için XMLHttpRequest nesnesinin open() ve send() isimli iki metodu kullanılır.

open() metodu 3 tane parametre alır. İsteği gönderdiğimiz HTTP metodu, isteği gönderdiğimiz sayfa ya da sınıf ve isteğin asenkron ya da senkron gönderildiğini belirten boolean bir değer.

send() metodu ise isteği göndermek için kullanılır. HTTP metodu olarak POST kullanıldığında ise – metoda parametre olarak – sunucuya gönderilecek değerler verilir.

[box type=”info”] HTTP metodu olarak hangi yöntemin kullanılacağına kendiniz karar vermelisiniz. Aralarındaki fark “GET – POST İstekleri” adlı makalemde ele alınmıştır.[/box]

AJAX’ta GET metodu ile istek göndermek için ;

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.open("GET","servletIsmi",true);
xmlhttp.send();

[/codesyntax]

POST metodu ile istek göndermek için ise ;

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.open("POST","servletIsmi",true);
xmlhttp.send();

[/codesyntax]

kullanılır. Sunucuya parametre göndermek için GET metodunda ;

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.open("GET","servletIsmi?isim=Erkin",true);
xmlhttp.send();

[/codesyntax]

ve POST metodunda,

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.open("POST","servletIsmi",true);
xmlhttp.send("isim=Erkin");

[/codesyntax]

kullanılır.

İsteği yukarıdaki gibi gönderdiğimizde bazen tarayımız parametreleri cashlediği için aynı sonucu alırız. Bunun için isteğin her seferinde farklı bir parametre değeri ile gönderilmesi gerekir. En sağlam rasgele değer üretme yöntemi, o anın tarih saat bilgisini rasgele üretilmiş bir ondalikli sayıyla çarpmaktır. Dolayısıyla parametre gönderirken kodu aşağıdaki gibi yazabilirsiniz.

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.open("GET"," servletIsmi?t=" + (new Date().getTime() * Math.random()),true);
xmlhttp.send();

[/codesyntax]

Gönderilen parametrenin sunucuda ille de kullanılması gerekmez. Biz yukarıdaki kod ile her seferinde farklı bir değer gönderdiğimiz için tarayıcının çerez saklama işinden kurtulmuş oluruz.

open() metodundaki son parametre, isteğin senkron ya da asenkron gönderilmesi ise tamamen yazılımcının insiyatifindedir. Senkron gönderilen isteklerde sunucudan cevap dönmesi beklenir. Ancak genellikle sunucuda veri tabanına bağlanarak dönen değerleri sayfada göstermek gibi zaman alan işler yapılır. Bu yüzden son parametre genellikle true verilir ki JSP sayfamızdaki JavaScript kodu sunucu işini yaparken çalışmaya devam etsin.

Peki sayfamızdaki kod çalışırken sunucudan cevap döndüğünü nasıl anlayacağız? Bunun için onreadystatechange adında bir event vardır. Hazır olma durumu her değiştiğinde bu event tetiklenir. Toplamda 5 farklı durumu vardır.

0: istek yaratılmadı
1: sunucu bağlantısı kuruldu
2: istek alındı
3: istek işletiliyor
4: istek işi bitti ve cevap hazır halde

Cevabın geldiğini bu durumları kontrol ederek anlayabiliriz. Örneğin,

[codesyntax lang=”javascript” lines=”no”]

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("bilesenId").innerHTML=xmlhttp.responseText;
        }
}

[/codesyntax]

Yukarıdaki kodda readyState 4 ise yani cevap hazır ise ve status 200 ise yani sayfa bulunmuş ve bir sıkıntı yoksa sayfamızdaki bilesenId id’li bileşen değerini sunucudan gelen değerle güncelle demiş olduk.

[box type=”info”] status sadece 200 ve 404 değerlerini alır. 200 bir sıkıntı olmadığını, 404 ise sayfanın bulunamadığını belirtir.[/box]

Şimdi basit bir uygulama yazalım. JSP sayfamızda bir tane buton olsun. Tıkladığımızda sayfanın tamamı yenilenmeden alt kısıma sunucudan aldığımız text içeriği yazdıralım.

JSP Sayfası :

[codesyntax lang=”asp” lines=”no”]

<%@ page language="java" contentType="text/html; charset=ISO-8859-9" pageEncoding="ISO-8859-9"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
    function ajaxMetodu() {
        var xmlhttp;
        if (window.XMLHttpRequest) {    // IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
         } else {    // IE6, IE5
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.onreadystatechange = function() {
             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                 document.getElementById("bilesenId").innerHTML = xmlhttp.responseText;
             }
         }
         xmlhttp.open("GET","sunucudakiSinif",true);
         xmlhttp.send();
     }
 </script>
 </head>
 <body>
     <input type="button" value="AJAX ile bilgi getir" onclick="ajaxMetodu()"/>
     <div id="bilesenId"></div>
 </body>
 </html>

[/codesyntax]

Servlet :

[codesyntax lang=”java” lines=”no”]

package servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/sunucudakiSinif")

public class AjaxDeneme extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("Sunucudan gelen icerik !!!");
    }
}

[/codesyntax]

Dikkat ederseniz butona tıkladığımızda istek sunucudan dönecek ve tarayıcı sayfanın tamamını yenilemeyecektir. Sayfanın görüntüsü de aşağıdaki gibi olacaktır.

AJAX kullandığımızda sunucudan dönen verilerin tipi text tabanlıdır. Yani veriler String ya da XML olarak gelir. Fakat kullanılan Jackson, Google GSon, JSON.simple gibi 3. parti AJAX kütüphaneleri sayesinde nesneleri de web sayfalarımızda rahatça kullanabilmekteyiz.

NetBeans 7.2 piyasada

NetBeans IDE’sinin son sürümü 7.2 piyasaya sürüldü. İlk yorumum gayet olumlu. Eskisi ile yenisi arasında hız bakımından baya fark var.

Bunun dışında FindBug entegrasyonu ile kendi bug’larını kendisi bulacağı ve rapor edeceği söyleniyor.

Kullanalım ve görelim derim.

 

[box type=”download”] İndirmek için buraya tıklayın.[/box]

Belirli bir zamanda Java kodu çalıştırmak

EJB kullanırken sunucuda çalışan bir kodun belirli aralıklarla, belirli zamanlarda çalışması için Timer Servisleri kullanılır.

Timer Servisleri  ilk olarak EJB 2.1 spesifikasyonu ile beraber eklenmiştir.

EJB Container tarafından desteklenen bean’lerin, belli zaman aralıklarında ya da belli bir saatte çalışmasını sağlayan yapılardır.

Peki EJB dışında belirli zamanlarda çalışmasını istediğimiz bir Java uygulamamız varsa bunu nasıl yapacağız?

İşte bu tarz bir ihtiyaç halinde TimerTask isimli soyut sınıf yardımımıza koşuyor.

Kullanımı ise oldukça basit. Örneğin her saat başı veri tabanından Personel bilgilerini güncelleyen bir uygulama düşünün.

[codesyntax lang=”java” lines=”no”]

import java.util.TimerTask;

// TimerTask sınıfından türeyen sınıf

public class ZamanlanmisGorev extends TimerTask {

        // yapilacak is

        public void run() {
               // veri tabanindan personel bilgileri çekerek ekranda
               // gösteriyoruz
        }
}

[/codesyntax]

İlk olarak java.util paketindeki TimerTask sınıfından türeyen bir sınıf tanımlıyoruz. TimerTask soyut bir sınıtfır. Bu sınıf içerisindeki run() metodunda belirli aralıklarla yapılacak işleri yapıyoruz.

İkinci olarak ise yeni bir Timer nesnesi yaratarak overload edilmiş schedule() metodunu çağırıyoruz. Hepsi bu kadar.

[codesyntax lang=”java” lines=”no”]

import java.util.Timer;

//ZamanlanmisGorev sinifini kullanan sinif
public class AnaSinif {
        public static void main(String args[]) throws InterruptedException {

               Timer time = new Timer(); // Timer nesnesi yarat
               ZamanlanmisGorev zg = new ZamanlanmisGorev(); // sinifimizi yarat
               time.schedule(zg, 0, 3600000); // saat basi calistir
        }
}

[/codesyntax]

Timer sınıfında 4 tane schedule() metodu vardır. Bunlar işimize yarayan bir tanesini seçerek kullanabiliriz.

schedule(TimerTask task, Date time) : Belirli bir tarihte kodu çalıştırır.

schedule(TimerTask task, Date firstTime, long period)  : Belirli bir tarihte başlayan kodu belirlenmiş süreler geçtikten sonra tekrar çalıştırır.

schedule(TimerTask task, long delay)  : Kodu belirli aralıklarla çalıştırır.

schedule(TimerTask task, long delay, long period)  : Belirli bir zaman sonra başlayacak kodu yine belirli bir süre sonra tekrar çalıştırır. Ben örnek kodda bu metodu kullandım.

[box type=”info”] Yazmış olduğumuz kod hiçbir zaman sonlanmayacaktır. Her saat başı yeniden çalışacaktır.[/box]

JSP Sayfasından JavaBean Çağırmak

Java Bean sınıflarının ne olduğunu “Java Bean Nedir?” adlı makalemde incelemiştik. Bu yazımda ise JSP sayfalarından Java Bean sınıflarına action etiketleri ile nasıl erişildiğinden bahsedeceğim.

[box type=”info”] NOT : JSP sayfalarında kullanılan tüm deyimler için “JSP Sayfalarında Kullanılan Deyimler” başlıklı yazımı inceleyebilirisiniz. [/box]

JSP sayfalarında Java Bean sınıfları ile ilgili işlemler yapabilmek için kullanılan 3 tane etiket vardır. Bunlar ;

  1. <jsp:useBean>
  2. <jsp:setProperty>
  3. <jsp:getProperty>

etiketleridir. Sırasıyla ne işe yaradıklarını ve hangi özellikleri olduğundan bahsedelim.

1)      <jsp:useBean>

Bu etiket JSP sayfasında bir JavaBean sınıfı tanımlamak ve instance’ını yaratmak için kullanılır. Yazımı aşağıdaki gibidir.

[codesyntax lang=”xml” lines=”no”]

<jsp:useBean
        id="nesne-ismi"
        scope="page | request | session | application"
        type="nesne-tipi"     
        beanName="bean-ismi"
/>

[/codesyntax]

  • id : Sayfa içerisinde instance’ı yaratılan nesneye ulaşacağımız isimdir. Nasıl ki ;

Personel personel = new Pesonel();  dediğimizde küçük harfle yazılan referans tipindeki değişken Personel nesnesini gösteriyorsa bu etiketteki id de aynı işi yapar.

  • scope : Yaratılan nesnenin hangi geçerlilik bölgesinde saklanacağının belirtildiği özelliktir. Varsayılan olarak page scope kullanılır. Yani sayfa her yüklendiğinde yeni bir bean instance’ı yaratılır.
[box type=”info”] “Web Uygulamalarında Scope Kavramı” isimli yazıyı inceleyiniz.[/box]
  • type : Nesnenin tipinin belirtildiği özelliktir. Değer olarak kendi tipi veya türediği herhangi bir tip verilebilir. Örneğin yaratılan nesne Honda nesnesi ise type özelliği Honda veya türediği Araba tipinde olabilir. Çok biçimlilik ilkesine dayanarak gerçekleştirdiği arabirimler varsa o interface’ler de olabilir.

Zorunlu bir özellik değildir. Kullanılmasa da olur.

  • class : Yaratılan nesnenin tipinin sınıf adıdır. Mesela ,

Date tarih = new java.util.Date(); şeklindeki bir nesne için class : java.util.Date olacaktır.

  • beanName : Aynı class özelliği gibi beanName özelliği de instance’ı yaratılan nesnenin isminin belirtildiği özelliktir. Aralarındaki fark ise beanName özelliğinin istek anında belirtilebilir olmasıdır.

2)      <jsp:setProperty>

Bu etiket sayesinde instance’ı yaratılan bean sınıfının içerisindeki bir değişkenin ya da değişkenlerin değerlerinin tamamının setlenmesi sağlanır. Yazımı aşağıdaki gibidir.

[codesyntax lang=”xml” lines=”no”]

<jsp:setProperty
        name="nesne-ismi"
        property="degisken-ismi"
        param="setlenecek-parametre-ismi"
        value="setlenecek-degisken-degeri"
/>

[/codesyntax]

  • name : <useBean> etiketinde verdiğimiz id özelliğinin ismidir. Bu sayede sayfa içerisindeki hangi bean nesnesinin özellikleri set edilecek anlaşılmış olur.
  • property : Değeri setlenecek olan özelliğin ismidir. Bean sınıfındaki değişkenlere karşılık gelir.
  • param : Değeri setlenecek olan özelliğin istek parametresinin ismidir. Örneğin Servlet sınıflarında kullandığımız request.getParameter(“isim”) metodunda kullanılan “isim” değeri gibi.
  • value : Setlenecek değeri ifade eder.

3)      <jsp:getProperty>

Bean sınıfındaki değişken değerlerine ulaşmak için kullanılan etikettir. Yazımı aşağıdaki şekildedir :

[codesyntax lang="xml" lines="no"]
<jsp:getProperty
        name="nesne-ismi"
        property="degisken-ismi"
/>
[/codesyntax] 
  • name : Aynı <jsp:setProperty> etiketinde olduğu gibi nesnenin id’sine verilen değerdir.
  • property : Değeri okunacak değişkenin ismidir.

JSP Sayfalarında Kullanılan Deyimler

JSP sayfaları dinamik içerikten oluşur. Bu dinamikliği sağlamak için JSP’lerde kullanılan bildirim deyimleri vardır.

Jsp sayfalarında kullanılan deyimler 6 çeşittir. Bunlar ;

  1. <%@ directives %>                : Çevirim anı olaylarını JSP Engine’e tayin eder.
  2. <%! Java declarations %>    : Metod ve değişken tanımları yapılır.
  3. <% java code %>                     : Jsp sayfası içerisine Java kodları yazılır.
  4. <%= expression %>               : Değerleri ekrana yazmanın kısa yoludur.
  5. <jsp:actionName />              : İstekleri Jsp Engine’e temin eder.
  6. <%– comment –%>              : Commentler yazılır.

1)      DIRECTIVES (<%@ directives %>) :

3 çeşit direktif vardır :

  • page: sayfanın genel özellikleri hakkında bilgi verir.
    • <%@page language=“java” %>
  • include: Jsp Engine’e o sayfanın başka bir dosyayı kullandığını belirtir. (file özelliği zorunludur)
    • <%@include file=”copy.html” %>
  • taglib: Jsp sayfasında kullanılan tag kütüphanesini prefix ile ilişkilendirir.
    • <%@taglib prefix=”test” uri=”taglib.tld” %>

Etiket isimleri, özellikleri, değerleri küçük büyük harf duyarlıdır. Değerler tek tırnak veya çift tırnak içerisine yazılabilir. İkisi de aynı anlama gelir. =’den sonra boşluk bırakılmaz.

2)      DECLARATIONS (<%! declarations%>) : 

Bu bloğun içerisine yazılan Java kodları Jsp Engine tarafından oluşturulan servlet sınıfının service() metodu dışarısında oluşturulur. Eğer JSP içerisinde jspInit() ve jspDestroy() metodları ezilecekse declaration içerisine yazılmalıdır. Declaration içerisine yazılmayan tüm java kodları, html kodları, JSP scriptletleri ve expressionları service() metodunun bir parçasıdırlar.

3)      JAVA CODE (<% java code %>) :

JSP sayfasının herhangi bir yerinde <% … %> tagleri arasına Java kodu yazılabilir. Bu etiketler arasında yazılan kodlar normal Java kodu olduğundan komut sonlarına “;” konulması gerekir.

4)      EXPRESSIONS (<%= expressions %>) :

Dinamik bir şekilde üretilen değerleri ekrana yazmanın kısa yoludur. Uzun yolu servlette yapıldığı şekliyle <% %> tagleri arasına PrintWriter objesi oluşturarak println() metodunu çağırmaktır. Expressionlar kullanılırken eğer bir metod çağrılıyorsa mutlaka o metodun değer döndürmesi gerekir. Void metodlar kullanılmaz, hata verir.

5)      ACTION (<jsp:actionName />) :

6 çeşit standart action vardır :

  • jsp:include                    JSP sayfasının başka web bileşenlerini kullanmasını sağlar
  • jsp:forward
  • jsp:useBean
  • jsp:setProperty         JSP sayfasında JavaBean’leri kullanabilmeyi sağlar.
  • jsp:getProperty
  • jsp:plugin             Applet’ler gibi client-side componentlara HTML kodu oluşturulması için Jsp Engine’e yol gösterir.

6)      COMMENT (<%– comments–%>) :

JSP commentleri <%– … –%> arasına,

HTML commentleri <!– … –> arasına yazılır.

Eclipse Juno’da Tomcat Server Tanımlamak

Tomcat sunucusunun bir kurulum sihirbazı yok. Dolayısıyla son sürümünü bu adresten indirerek sıkıştırılmış halini bilgisayarınızda istediğiniz dizine açabilirsiniz.

Eclipse’i açtıktan sonra alt kısımdaki Servers sekmesine gelin. Tanımlamış olduğunuz sunucular burada listelenecektir. Daha önceden tanımladığımız Glassfish sunucusunu bu listede görebilirsiniz.

Servers eklentisinde boş bir yerde sağ klik NewServer özelliğini seçin.

Daha sonra sunucu tipleri listesinde en yukarda Apache başlığını bulun. Bu aşamadan sonra tek yapmamız gereken sunucunun host bilgisini ve sunucu listesinde görüntüleneceği ismi belirlemek. Benim sunucum localhost’ta çalışacak, ismine de Tomcat v7.0 Server yazıyorum.

 Bilgisayarımızdaki kurulum dizinini gösteriyoruz.

 

Kullanacağım JRE versiyonunu seçiyorum. Bilgisayarınızda Eclipse dışında kullandığınız bir JRE versiyonu varsa bunu da gösterebilirsiniz.

 

Sunucuya deploy etmek istediğim proje ya da projeler varsa bunları da bir sonraki adımda seçerek Finish butonuna tıklıyorum.

En son görünüm aşağıdaki gibi olacaktır. Artık Tomcat sunucusunu Eclipse IDE’si içerisinden kontrol edebilir ve yeni bir web projesi yaratarak yayınlayabilirsiniz.

 

Eclipse Juno Üzerine Glassfish Server Tanımlamak

Öncelikle tanımlamak istediğimiz sunucuyu localhost’ta kullanacaksak bilgisayarımıza kurmamız gerekiyor. Glassfish’in son sürümünü bu adresten indirip en basit özellikleriyle kurabilirsiniz.

 

Çalışma alanınızı (workspace) seçip Eclipse’i açtıktan sonra alt kısımdaki Servers sekmesine gelin. Eğer daha önceden tanımlanmış sunucular varsa burada listelenecektir. Yoksa anlatacağım adımları izleyerek Glassfish 3.1.2 sunucusunu tanımlayabilirsiniz.

Öncelikle Servers eklentisinde boş bir yerde sağ klik New – Server ya da hiç sunucu yoksa aşağıdaki gibi new server wizard özelliğini seçin.

 

Daha sonra sunucu tipleri listesinde Glassfish başlığını bulamazsanız Download additional server adapters tıklayarak Glassfish server adaptorünü seçerek indirin. Bu aşamadan sonra tek yapmamız gereken sunucunun host bilgisini ve sunucu listesinde görüntüleneceği ismi belirlemek. Benim sunucum localhost’ta çalışacak, ismine de Glassfish 3.1.2 yazıyorum.

 

Sunucuyu kurarken belirlemiş olduğum Admin kullanıcısını ve parolasını giriyorum.

 

Sunucuya deploy etmek istediğim proje ya da projeler varsa bunları da bir sonraki adımda seçerek Finish butonuna tıklıyorum.

 

En son görünüm aşağıdaki gibi olacaktır. Artık Glassfish sunucusunu Eclipse IDE’si içerisinden kontrol edebilir ve yeni bir web projesi yaratarak yayınlayabilirsiniz.

 

Eclipse JSF desteği

JSF son sürümü ile birlikte faces-config.xml dosyasında yapılan tüm tanımların Annotation desteğinin eklenmesinden sonra sınıf başlarında yapılabilmesi sağlanmıştı. Sınıf başlarında kullanabildiğimiz Annotation’lardan bazıları :

  • @ManagedBean, 
  • @ReferencedBean, 
  • @FacesConverter, 
  • @FacesValidator, 
  • @FacesComponent, 
  • @FacesRenderer, 
  • @RequestScoped,
  • @SessionScoped,
  • @ApplicationScoped,
  • @ViewScoped,
  • @NoneScoped,
  • @CustomScoped,
  • @Named,
  • @Model.

Eclipse Web Tools Platform 3.4 ile annotationlar için kod tamamlama, JSF sayfasında EL yazarken kod tamamlama ve validasyon işlemleri de artık yapılabiliyor. Bu sayede Ctrl + Space ile çok daha hızlı ve syntax hatasız kod yazabiliyoruz.

Yönlendirme kurallarını (navigation rules) da üstü kapalı olarak yapabiliyoruz. Yani xml dosyasında tanımlamak yerine kullandığımız bileşenin action özelliğine safyayı ya da sınıfı direk ismi ile verebiliyoruz.

NetBeans 7.2 Release Candidate 1

NetBeans son sürümünde Java, JavaFX, Java EE, PHP, Groovy, C, C++ ana başlıkları altında birçok yeni özelliği IDE’ye ekleyerek 7.2 RC versiyonunu Windows, Mac, Linux, Solaris platformları için piyasaya sürdü. Temmuz ayı içerisinde de Final Release’in çıkmasını bekliyoruz.

IDE’ye eklenen en belirgin özelliklerden bazıları :

  • Editor özelliklerinin bloklanmadan projeleri daha hızlı şekilde gözden geçirebilme,
  • TestNG framework desteği,
  • Çeşitli Maven destekleri,
  • Oracle Public Cloud desteği,
  • Amazon Elastic Beanstalk desteği, 
  • JPA named query için kod tamamlama,
  • EJB ve CDI için editor ipuçları,
  • Gelişmiş JSF bileşen desteği,
  • Gelişmiş FXML ve FX CSS desteği,
  • Swing projeleri için FX desteği,
  • PHP 5.4 desteği,
  • Groovy 1.8.6 desteği,
  • Yeni C++ desteği,
  • Subversion 1.7 desteği,
  • Windows için 64 bit desteği.
İndirmek için