1 / 12

Spring as legacy

Spring as legacy. Hoe innovatie legacy kan worden. in samenwerking met HowITsDone. Geschiedenis JEE. J2EE: container managed security en persistence, global transaction management API’s niet schoon; container managed functionaliteit lekt door in de applicatiecode (bijv. EJB1 en 2)

deron
Télécharger la présentation

Spring as legacy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spring as legacy Hoe innovatie legacy kan worden in samenwerking met HowITsDone

  2. Geschiedenis JEE J2EE: container managed security en persistence, global transaction management API’s niet schoon; container managed functionaliteit lekt door in de applicatiecode (bijv. EJB1 en 2) Missende functionaliteit: SOAP stack, UI webframework, Dependency Injection

  3. Spring Maak applicatiecode schoon Alles runtime excepties! Plain Old Java Objecten! Dependency Injection! Ongewenst gevolg: heterogene ontwikkel API’s en frameworks Voorbeelden: DUO Java 5 straat: Spring + Axis + JEE JAXB + JEE Message Driven Beans + JEE Servlet/ JSF + JEE JPA Rotterdam IOO: Spring + Spring WS + JEE Servlet + Wicket + Hibernate

  4. Filosofisch uitstapje Is dit soort framework heterogeniteit bij software ontwikkeling een pluspunt, minpunt of noodzakelijk kwaad? Roept U maar… In mijn visie is het bijna altijd een minpunt. Wel af en toe handig om een log schip van koers te laten veranderen. Maar geen doel op zich. We hebben sowieso al dotNet, PHP en dan ook nog meerdere Java benaderingen? Nee dank u.

  5. Eeuwige lente? Voor degenen die het met mij eens zijn: Hadden we gewoon Spring moeten gebruiken voor alles? Roept U maar… In mijn visie alleen als Sun geen JEE5 en 6 had gespecificeerd; overigens gebruikt Spring wel JEE servlet…

  6. Na de lente volgt de zomer Sun (ja okee nu Oracle) is geen log schip; ze hebben in JEE5/6 nagenoeg alle Spring oplossingen ingebouwd CDI is zelfs uitgebreider dan Spring’s Dependency Injection Validation Beans (business layer -> web layer integratie) Persistency en transaction: JPA en JTA JSF 2 (samen met primefaces ;-) SOAP: JAX-WS, JAXB RESTful webservices: JAX-RS sort of outjection (SEAM)

  7. EJB-lite Stateless, stateful, and singleton session beans Local EJB interfaces or no interfaces Interceptors Container-managed and bean-managed transactions Declarative and programmatic security Embeddable API

  8. Web profile EJB-lite Servlet 3.0, JSF 2.0, JSP 2.2, EL 1.2, JSTL 1.2 CDI 1.0 JPA 2.0, JTA 1.1 Bean Validation 1.0 Dus niet: JMS, JAX-WS, JAXB, JAX-RS JavaMail 

  9. JEE 6 voorbeelden • Een paar voorbeelden van annotaties waarmee je een POJO om kan zetten in een JEE object: • EJB: @stateless of @singleton • EJB aanroep: @EJB • SOAP endpoint @WebService • JMS endpoint @MessageDriven

  10. JEE 6 voorbeelden (2)  CDI @Stateful @SessionScoped public class Login {      @Inject Credentials credentials;      @Inject EntityManager userDatabase;      private User user;      @TransactionAttribute(REQUIRES_NEW) @RolesAllowed("guest")     public void login() { ... }      public void logout() {          user = null; }      public boolean isLoggedIn() {          return user!=null; }      @RolesAllowed("user") @Produces @LoggedIn      User getCurrentUser() { ... }  }

  11. JEE 6 voorbeelden (3)  CDI  @Target( { TYPE, METHOD, PARAMETER, FIELD })  @Retention(RUNTIME)  @Documented  @Qualifier       public @interface LoggedIn {...} ----------------------------------------- @Model public class Credentials {       private String username;       private String password;       public String getUsername() { return username; }       public void setUsername(String username) { this.username = username; }       public String getPassword() { return password; }       public void setPassword(String password) { this.password = password; } }

  12. Innovatie of conservatief EJB’s bah? Dat is oud nieuws. Ga met je tijd mee aub. Je hebt nu zelfs de optie EJB lite; EJB’s die draaien in een WAR zonder aparte EJB container (Tomcat, Jetty) Conclusie: een paar jaar stilstaan en je bent legacy in Java land ;-) http://www.oracle.com/technetwork/articles/javaee/javaee6overview-full-149950.pdfhttp://wikis.sun.com/display/GlassFish/Java+EE+6+Annotation+Reference

More Related