NetBeans & Java EE 5

thrillukrainianΛογισμικό & κατασκευή λογ/κού

7 Ιουν 2012 (πριν από 5 χρόνια και 13 μέρες)

386 εμφανίσεις

NetBeans &
NetBeans &
Java EE 5
Java EE 5
Presenter:  Roman Strobl
E­mail: roman.strobl@sun.com
Date:  27
th
 September, 2006
© 2006 
Sun Microsystems
Agenda

Introduction to Java EE 5

Web Services 2.0

EJB 3.0

Java Persistence API

JavaServer Faces

Q/A
© 2006 
Sun Microsystems
Java EE 5 Goal
Make it easier to develop Java EE 
applications
Especially when first getting started with Java EE
© 2006 
Sun Microsystems
How did we make it easier?
Then

Deployment 
descriptors

Required container 
interfaces

JNDI Lookups

Configuration files 
and command line 
options

No Supported UI 
Framework
Now

Java language 
annotations

Plain Old Java 
Objects (POJOs)

Dependency 
Injection

More and better 
defaults

Java Server 
Faces (JSF)
© 2006 
Sun Microsystems
How much easier is it?
J2EE 1.4
Java EE 5
Number of Java files
17
7
Lines of code (Java)
987
716
Number of XML Files
9
1
Lines of code (XML)
792
5
RosterApp
1
[1] Source: Raghu Kodali, 
Oracle
© 2006 
Sun Microsystems
Java EE 5 Major Features

Simplified web services support

Greatly simplified EJB development

New Java Persistence API

Dependency Injection

Easy web applications with JavaServer 
Faces

And fully compatible with J2EE 1.4
© 2006 
Sun Microsystems
Annotations in Java EE 5

For defining and using web services

To greatly simplify EJB development

To map Java classes to databases

To specify external dependencies

To map Java classes to XML

To reduce need for deployment 
descriptors
© 2006 
Sun Microsystems
Agenda

Introduction to Java EE 5

Web Services 2.0

EJB 3.0

Java Persistence API

JavaServer Faces 1.2

Q/A
© 2006 
Sun Microsystems
J2EE 1.4 Web Service
<?xml version='1.0' encoding='UTF­8' ?>
<webservices xmlns='http://java.sun.com/xml/ns/j2ee' 
version='1.1'>
  
<webservice­description>
    
<webservice­description­name>
     
HelloService</webservice­description­name>
    
<wsdl­file>
     
WEB­INF/wsdl/HelloService.wsdl</wsdl­file>
    
<jaxrpc­mapping­file>
     
WEB­INF/HelloService­mapping.xml
     
</jaxrpc­mapping­file>
    
<port­component xmlns:wsdl­port_ns='urn:HelloService/wsdl'>
      
<port­component­name>HelloService</port­component­name>
      
<wsdl­port>wsdl­port_ns:HelloServiceSEIPort</wsdl­port>
      
<service­endpoint­interface>
       
endpoint.HelloServiceSEI</service­endpoint­interface>
      
<service­impl­bean>
        
<servlet­link>WSServlet_HelloService</servlet­link>
      
</service­impl­bean>
    
</port­component>
  
</webservice­description>
</webservices>
<?xml version='1.0' encoding='UTF­8' ?>
<configuration
    
xmlns='http://java.sun.com/xml/ns/jax­rpc/ri/config'>
  
<service name='HelloService'
      
targetNamespace='urn:HelloService/wsdl'
      
typeNamespace='urn:HelloService/types'
      
packageName='endpoint'>
    
<interface name='endpoint.HelloServiceSEI'
        
servantName='endpoint.HelloServiceImpl'>
    
</interface>
  
</service>
</configuration>
package endpoint;
import java.rmi.*;
public class HelloServiceImpl
implements HelloServiceSEI {
public String sayHello(String param)
throws java.rmi.RemoteException {
return “Hello “ + param;
}
}
package endpoint;
import java.rmi.*;
public interface HelloServiceSEI
extends java.rmi.Remote {
public String sayHello(String param)
throws java.rmi.RemoteException;
}
© 2006 
Sun Microsystems
Java EE 5 Web Service
package endpoint;
import javax.jws.WebService;
@WebService
public class Hello {
public String sayHello(String param) {
return “Hello “ + param;
}
}
2006 JavaOne
SM
 Conference   |   Session 1076   | 
11
© 2006 
Sun Microsystems
© 2006 
Sun Microsystems
DEMO
DEMO
Java EE 5 Web Service
Java EE 5 Web Service
© 2006 
Sun Microsystems
Agenda

Introduction to Java EE 5

Web Services 2.0

EJB 3.0

Java Persistence API

JavaServer Faces 1.2

Q/A
© 2006 
Sun Microsystems
EJB 3.0

Dramatic simplification of all bean types

Regular Java classes (POJO)
>
@Stateless, @Stateful, @MessageDriven 
annotations
>
Use standard interface inheritance

Dependency injection
>
Instead of using JNDI API to location 
components and resources, let the container 
fetch them for you.

Entity Beans (CMP) replaced with Java 
Persistence API
© 2006 
Sun Microsystems
Java EE 5 Transactional Web Service
package endpoint;
import javax.jws.WebService;
import javax.ejb.Stateless;
@WebService
@Stateless
public class Hello {
public String sayHello(String param) {
return “Hello “ + param;
}
}
2006 JavaOne
SM
 Conference   |   Session 1076   | 
15
© 2006 
Sun Microsystems
© 2006 
Sun Microsystems
DEMO
DEMO
Java EE 5 Transactional Web Service
Java EE 5 Transactional Web Service
© 2006 
Sun Microsystems
Agenda

Introduction to Java EE 5

Web Services 2.0

EJB 3.0

Java Persistence API

JavaServer Faces 1.2

Q/A
© 2006 
Sun Microsystems
Java Persistence API (JPA)

Single persistence API for Java EE 
AND
 
Java SE

Developed by EJB expert group
>
Builds on years of experience with existing 
technologies and products

Much simpler than EJB CMP

Feedback is overwhelmingly positive

At least three implementations (all open 
source):
>
Oracle – GlassFish/TopLink Essentials
>
JBoss – Hibernate
>
BEA – Kodo/OpenJPA
© 2006 
Sun Microsystems
JPA – Configuration

The only XML configuration

Persistence Unit
>
Where to store data
>
JDBC API connection or server data source
>
Table Generation Setting
>
Create, Drop/Create, Nothing
>
Vendor specific properties

NetBeans will create this for you
© 2006 
Sun Microsystems
JPA – Persistence Unit
© 2006 
Sun Microsystems
JPA – Persistence Unit
persistence.xml:
<persistence version="1.0"...>
  
<persistence­unit 
name="HelloWorld­ejbPU"
 
transaction­type="JTA">
    
<provider>
oracle.toplink.essentials.ejb.cmp3.EntityManager
FactoryProvider
</provider>
    
<jta­data­source>
jdbc/sample
</jta­data­source>
    
<properties>
      
<property
name="toplink.ddl­generation" 
value=
"create­tables"
/>
    
</properties>
  
</persistence­unit>
</persistence>
© 2006 
Sun Microsystems
JPA – Object Relational Mapping

Developer works with objects
>
Database queries return objects
>
Object changes persist to the database

Data transformation is handled by the 
persistence provider (TopLink, Hibernate, 
etc.)

Annotations define how to map objects to 
tables
>
@Entity
 marks a regular Java class as an 
entity.
>
Class attributes map to table columns. Can be 
customized with 
@Column
.
>
Manage relationships: 
@OneToMany, ...
© 2006 
Sun Microsystems
JPA – Entity Class
import javax.persistence.*;
@Entity
public class Person {
@Id
 private String name;
private int visits;
public Person() { }
public Person(String name) {
this.name = name;
}
public int incrementVisit() {
return visits++;
}
}
© 2006 
Sun Microsystems
JPA – Entity Manager

EntityManager stores/retrieves data

Inject EntityManager:
>
@PersistenceContext private EntityManager 
em;

Create an instance of the entity:
>
Person p = new Person(param);

Use EntityManager methods to persist data
>
em.persist(p);
 
em.merge(p); em.delete(p);

Query using EJB QL or SQL
>
Person p = em.find(Person.class, param);
© 2006 
Sun Microsystems
JPA – Entity Manager
...
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@WebService
@Stateless
public class Hello {
@PersistenceContext private EntityManager em;
public String sayHello(String param) {
Person p = em.find(Person.class, param);
if (p == null) {
p = new Person(param);
em.persist(p); 
}
p.incrementVisist();
return “Hello “ + param
 + “: “ + 
} }
2006 JavaOne
SM
 Conference   |   Session 1076   | 
25
© 2006 
Sun Microsystems
© 2006 
Sun Microsystems
DEMO
DEMO
Java EE 5 Transactional Web Service with Java 
Java EE 5 Transactional Web Service with Java 
Persistence
Persistence
© 2006 
Sun Microsystems
Agenda

Introduction to Java EE 5

Web Services 2.0

EJB 3.0

Java Persistence API

JavaServer Faces 1.2

Q/A
© 2006 
Sun Microsystems
JavaServer Faces 1.2

The Java EE Standard Web Application 
Framework
>
Managed beans support dependency injection
>
Easy to use, powerful, extensible Expression 
Language, shared with JSP

Large market of JSF components
>
Over 200 components from over 20 vendors, 
such as...
>
Apache, BusinessObjects, ESRI, Oracle, Sun, 
etc.
>
Including AJAX support

Java BluePrints AJAX Components
>
http://blueprints.dev.java.net
© 2006 
Sun Microsystems
JavaServer Faces 1.2 in NetBeans

Code Completion for:
>
JavaServer Pages
>
JavaServer Faces, including 
expression 
language
>
Java Standard Tag Libraries
>
Any tab libraries added by the user

Integrated documentation

HTML, JSP and JSF component palette
© 2006 
Sun Microsystems
JavaServer Faces 1.2 in NetBeans

Generation of JavaServer Faces 
applications from entity classes:
>
Pages – list, detail, edit, create
>
Managed bean
>
Navigation rules

Code is easy to read/change

Helps to learn the patterns

Gets you started quickly

Code generation similar to Ruby on Rails...
2006 JavaOne
SM
 Conference   |   Session 1076   | 
30
© 2006 
Sun Microsystems
© 2006 
Sun Microsystems
DEMO
DEMO
Java EE 5 JavaServer Faces Generation
Java EE 5 JavaServer Faces Generation
© 2006 
Sun Microsystems
Summary

The developer works less
>
No synchronization between Java 
programming language and XML

The container works more
>
Annotation processing, dependency injection

NetBeans 5.5 knows Java EE 5
>
Less work to hide the complexity and XML 
descriptors
>
Does more useful things: wizards, hints, code 
validation, code generation, etc.

Java EE 5 = increased developer 
productivity
© 2006 
Sun Microsystems
Questions & Answers
NetBeans &
NetBeans &
Java EE 5
Java EE 5
Presenter:  Roman Strobl
E­mail: roman.strobl@sun.com
Date:  27
th
 September, 2006