Java EE’de Injection Mekanizması

Java EE, nesnelerin instance’larını yaratmadan direk erişilebilmesini sağlayan iki tip injection mekanizması destekler. Sadece gerekli olan kaynaklar ve bağımlı oldukları nesneler annotation‘lar ile belirtilir. Geri kalan tüm iş Container tarafından ele alınır. Bu yazımda kullanılan iki tip Injection ile ilgili bilgiler vermeye çalışacağım :

      1. Resource Injection :

Container tarafından yönetilen ve JNDI ile erişebildiğimiz nesnelere erişmek için kullanılır. Örneğin Servlet sınıfları, Managed Bean’ler, Enterprise Bean’ler ya da sunucuda tanımlanmış olan bağlantı havuzları gibi veri kaynakları.

@Resource annotation’ı kullanılır.

[codesyntax lang=”java5″ lines=”no”]

public class MyServlet extends HttpServlet {
	@Resource(name="java:comp/erkin")
	private Datasource dsc;
	...
}

[/codesyntax]

Benzer bir iş setter metodu tanımlayarak da kullanılabilir.

[codesyntax lang=”java5″ lines=”no”]

public class MyServlet extends HttpServlet {
	private Datasource dsc;
	...
	@Resource(name="java:comp/erkin")
	public void setDsc(Datasource ds) {
		dsc = ds;
	}
}

[/codesyntax]

[box type=”info”] Setter metotlarının mutlaka void dönüş tipi olması, metot isminin set ile başlaması ve tek bir parametre alması gerekir.[/box]

 @Resource annotation’ı type safe olmadığı için dönen nesnelerle atanan nesnelerin tipinin aynı olması gerekir. Aynı olmadığı takdirde çalışma anında hata alırsınız.

     2. Dependency Injection :

Dependency Injection sayesinde normal Java sınıfları, managed nesnelere dönüştürülerek Container tarafından yönetilen başka bir nesne içerisinde kullanılabilir.

@Inject annotation’ı kullanılır. Bu annotation ile belirtilen neesnelerin tüm yaşam döngüleri (yaratılmasından yok edilmesine kadar) Container tarafından yönetilir. Ayrıca Java EE Inject edilen bean’ler için geçerlilik bölgeleri tanımlar. (Scope)

[codesyntax lang=”java5″ lines=”no”]

@RequestScoped
public class CurrencyConverter { ... }

[/codesyntax]

Servlet sınıfı içindeki kod :

[codesyntax lang=”java5″ lines=”no”]

public class MyServlet extends HttpServlet {
    @Inject CurrencyConverter cc;
    ...
}

[/codesyntax]

Resource Injection’a kıyasla Dependency Injection’da nesneler type safe yönetilirler.

Aralarındaki genel farklar :

cdi

Kaynak : http://docs.oracle.com/javaee

NetBeans IDE 7.4 Beta

NetBeans 7.3 sürümünde eklenen Java EE 7 desteği beta sürüm olan 7.4’te geliştirilmeye devam ediyor. HTML 5 destekli dinamik web sayfaları tasarlayabilirsiniz. Önümüzdeki aylarda çıkması beklenen JDK 8’in de geliştirilmeye devam eden sürümü NetBeans 7.4 Beta’da desteklenmiş.

Geliştirme ortamını indirmek için

[box type=”download”] buraya tıklayabilirsiniz[/box]

Desteklenen yeni teknolojiler ;

HTML5

  • Phonegap application development
  • Support for Android and iOS Browsers
  • Editing support for stylesheet languages: SASS and LESS
  • Browser switcher in main toolbar
  • Saving changes from Chrome Developer Tools
  • Network monitor
NetBeans IDE Browser Switcher
Full Screenshot

Java EE

  • HTML5 features available in Java EE projects
  • Wizards for JSF 2.2 Resource Library Contracts and FacesComponents
HTML5 Application in Java EE in NetBeans IDE

PHP

  • HTML5 features available in PHP applications
  • Nette Framework 2 (with Latte templates) and Zend Framework 2 support
  • Atoum testing framework support
  • Editor and Rename type refactoring improvements
  • Static code analysis support
Nette Framework2 Support in NetBeans IDE
Full Screenshot

Java

  • Preview support for JDK 8 features: Profiles, Lambdas
  • Code completion, Hints and Refactoring improvements
  • Native packaging
  • Updated bundled Ant 1.9.0 and Maven 3.0.5
JDK8 Preview Support in NetBeans IDE

JavaScript

  • Editing support for AngularJS, Knockout and ExtJS frameworks
  • Navigator and code folding in JSON files
  • Enhanced code completion with improved accuracy
JSON Navigator in NetBeans IDE
Full Screenshot

JavaFX

  • New FXML File dialog in Maven projects
  • Tighter alignment for JavaSE and JavaFX project types
  • Improvements to Project Deployment options

C/C++

  • Run/Debug launchers support
  • Find Usages improvements
  • C/C++ formatting style per project
Find Usages improvements in NetBeans IDE

Miscellaneous

  • Lock Contention for profiling tasks
  • Enhancements to Versioning tools: Subversion, Git, Mercurial
  • TestNG and Junit improvements
  • Improvements to Databases
  • New Tasks Dashboard and Notifications windows

 

Kaynak : netbeans.org

Dünyanın ilk Java EE 7 Sunucusu Glassfish

Mayıs 2013’te Glassfish sunucusunun son sürümü olan 4.0 versiyonu piyasaya sürüldü. Glassfish Server 4.0’ın en önemli özelliği Java EE 7 ‘ye destek vermesi. Desteklenen teknolojilere göz atacak olursak ;

Yeni Eklenen Teknolojiler :

  • Java API for JSON Processing (JSON-P) 1.0
  • Java API for WebSocket 1.0
  • Batch Applications for the Java Platform 1.0
  • Concurrency Utilities for Java EE 1.0
  • Java Message Service (JMS) 2.0
  • Java API for RESTful Web Services (JAX-RS) 2.0

Güncellenen Teknolojiler :

  • Enterprise Java Beans (EJB) 3.2
  • Contexts and Dependency Injection for Java EE (CDI) 1.1
  • Java Persistence API (JPA) 2.1
  • JavaServer Faces (JSF) 2.2
  • Java Servlet 3.1
  • Bean Validation (BV) 1.1
  • Expression Language (EL) 3.0
  • Interceptors 1.2
  • Java Transaction API (JTA) 1.2
  • JavaServer Pages (JSP) 2.3
  • JavaMail 1.5

Yeni çıkan sunucunun bu sürümünün amacı, kod geliştiricilerin Java EE 7 platformu ile çalışabilmelerini sağlamak. Dolayısıyla cluster mimaride ya da gömülü sunucularda çalışmanız için henüz yeterli desteği vermeyebilir.