170 likes | 285 Views
JavaOne 2006. Markus Bjartveit Krüger markus.kruger@ergo.no. Temaer. Java Platform, Enterprise Edition 5 Enterprise Javabeans 3.0 Java Persistence API REST: web services på en ny (gammel) måte IDE-krigen: NetBeans 5.5 vs Eclipse 3.2. Java EE 5. J2EE → JEE
E N D
JavaOne 2006 Markus Bjartveit Krüger markus.kruger@ergo.no
Temaer • Java Platform, Enterprise Edition 5 • Enterprise Javabeans 3.0 • Java Persistence API • REST: web services på en ny (gammel) måte • IDE-krigen: NetBeans 5.5 vs Eclipse 3.2
Java EE 5 • J2EE → JEE • Mål: enklere å utvikle enterprise-applikasjoner • Krever Java 5.0 • Fullstendig bakoverkompatibel • Standarden ferdig: final release 11. mai 2006 • Referanseimplementasjon tilgjengelig fra Sun, basert på open source-prosjektet GlassFish • http://java.sun.com/javaee/downloads/ • http://java.sun.com/javaee/community/glassfish/
EJB 3.0 • Bruker annotations (Java 5) i stedet for konfigurasjon i XML-filer • Forenklet programmeringsmodell • Plain Old Java Objects (POJO); forretningslogikk trenger ikke fra JEE-grensesnitt lenger • Trenger ikke remote / local interfaces eller home interfaces • Dependency injection basert på annotations; trenger ikke slå opp ressurser i JNDI, mye lettere å skrive testklasser
Eksempel: EJB 2.1 public class PayrollBean implements javax.ejb.SessionBean { SessionContext ctx; DataSource empDB; public void setSessionContext(SessionContext ctx) { this.ctx = ctx; } public void ejbCreate() { empDB = (DataSource)ctx.lookup( "jdbc/empDB"); } public void ejbActivate() { } public void ejbPassivate() { } public void ejbRemove() { } public void setBenefitsDeduction(int empId, double deduction) { ... Connection conn = empDB.getConnection(); ... } ... }
Eksempel: EJB 3.0 @Stateless public class PayrollBean implements Payroll { @Resource private DataSource empDB; public void setBenefitsDeduction(int empId, double deduction) { ... Connection conn = empDB.getConnection(); ... } ... }
Java Persistence API (JPA) • Erstatter entity beans • Del av JEE 5, men kan også brukes selvstendig • Grensesnitt mot, ikke erstatning for, eksisterende ORM-rammeverk som TopLink og Hibernate • Bruker annotasjoner og POJOs i stedet for grensesnitt og XML-deklarasjoner
JPA: Eksempel på entitet @Entity public class Employee implements Serializable { private String id; private String name; private Department department; // Every entity must have a no-arg public/protected constructor. public Employee(){ } public Employee(String name, Department dept) { this.name = name; this.department = dept; } @Id // Every entity must have an identity. public String getId() { return id; } public void setId(String id) {this.id = id;} public String getName() {return name; } public void setName(String name) { this.name = name;} @ManyToOne public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } }
JPA: Eksempel på bruk @Stateless public class HRMSBean implements HRMS { @PersistenceContext private EntityManager em; public Employee createEmployee(String empName, String departmentName) { Department dept = em.find(Department.class, empName); Employee emp = new Employee(empName, dept); // User is responsible for managing bidirectional // relationships dept.getEmployees().add(emp); em.persist(emp); return emp; } } @Remote public interface HRMS { Employee createEmployee(String empName, String departmentName); }
JEE 5: døden for Spring? • Neppe; Spring 2.0 på vei • JEE krever fremdeles JEE-spesifikke bindinger, selv om rammeverket er mindre påtrengende • Spring-tjenester kan bytte fra JEE til andre plattformer ved å endre konfigurasjonsfiler, uten noen kodeendringer • Kan for eksempel bytte til Jini/Javaspaces, se Gigaspaces sin Spring-integrasjon
REST: web services på ny (gammel) måte • REST: Representational State Transfer • “Architectural Styles and the Design of Network-based Software Architectures”, Roy Fielding • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm • Konkurrent til SOAP • Ikke en standard, snarere en arkitektur • Brukes blant annet av tjenester hos Yahoo, del.icio.us og Amazon
Kjennetegn ved REST • Hver ressurs har unik URL • Bruker hele spekteret av aksessmetoder i HTTP (GET, POST, PUT, DELETE, osv.) • CRUD med HTTP:GET = SELECT, PUT = INSERT, POST = UPDATE, DELETE = DELETE • Mindre overhead enn SOAP • Utnytter web-infrastruktur (cacher, proxyer) bedre • Må definere struktur for respons • Ikke så god støtte (ennå) i utviklingsverktøy • Bedre egnet for AJAX
REST og Java • Støttes av JAX-WS • Men: mye manuelt knot • Støttes av AXIS 2.0 • Kan implementeres manuelt (java.net.URL, Apache HTTPClient, m.m.), siden grensesnittene typisk er mye enklere
IDE-krig:NetBeans 5.5 vs Eclipse 3.2 • NetBeans 5.5: beta tilgjengelig • Eclipse 3.2: beta tilgjengelig, endelig release som del av samlerelease Eclipse Callisto 30. juni 2006
Nytt i NetBeans 5.5 • Støtte for JEE 5 • JPA: kan generere entitetsklasser fra DB-skjema og omvendt • Statisk og dynamisk verifikasjon av JEE 5-kode • Profilering av hele JEE-stacken • God integrasjon med GlassFish • autogenerering av testsider for web services • HTTP monitor: ta opp, revider og spill tilbake HTTP-forespørsler • SOAP monitor: ditto for SOAP • analyse av kallflyt for web service-kall
Nytt i Eclipse 3.2 • Eclipse Callisto: fellesslipp av 10 Eclipse-prosjekt • Business Intelligence and Reporting Tools • C/C++ IDE • Data Tools Platform • Eclipse Modeling Framework • Graphical Editor Framework • Graphical Modelling Framework • Eclipse Project (kjerneprosjektet) • Test and Performance Tool Platform • Web Tools • Visual Editor
IDE: evaluer høst 2006 • Hvis du utvikler for JEE, bør du evaluere NetBeans og Eclipse på nytt høsten 2006 • Nyheter fra andre leverandører? IntelliJ, JDeveloper, andre?