Java Teknologi Teknikker Økosystem Johannes Brodwall
Hvem er jeg?
Johannes Brodwall
Resident Java Expert, BBS
Organizer, Oslo XP Meetup
Rådgiver; Java, arkitektur og smidige prosesser
(I motsetning til visse andre...)
Har ingen kake å mele
”Hva kan vi forvente når vi jobber med Java?”
(0)
Hva er Java ?
Java er ikke et programmeringsspråk
Java er ikke en teknologi
Bibliotek Språk Open Source Standarder Kunnskap Community Teknikker Verktøy Eclipse IntelliJ Ant Maven NetBeans Spring Tomcat JCP Apache Codehaus Enhetstest Continuous Integration Java EE MVC Defacto standarder XML EJB Servlets JVM
Java er et økosystem
Bibliotek Språk Open Source Standarder Kunnskap Community Teknikker Verktøy Eclipse IntelliJ Ant Maven NetBeans Spring Tomcat JCP Apache Codehaus Enhetstest Continuous Integration Java EE MVC Defacto standarder XML EJB Servlets JVM
(1)
Historien om Java
Stille sjø?
(2)
| Java Enterprise Edition
Java EE
Tidligere J2EE
(Ikke JEE)
Mål: Løs 90 %
Model-View-Controller
ControllerView Logikk Persistens Database 1. Request 2. Update state 3. Retrieve state 4. Display state 5. Response (HTML) Thin Client
Java EE teknologiene
ServletsJSP Session Beans Entity Beans JDBC Enterprise Java Beans ”Web Tier”
Men det ble veldig komplekst JTA EJB RMI-IIOP JMS Two-phase commit Entity Beans RMI JCA WAR EAR Stateless session beans Stateful session beans Message driven beans Java Server Pages Servlets
Overambisøs teknologi
ControllerView Logikk Persistens Database Persistens Database
ControllerView Logikk Persistens Database
ControllerView Logikk Persistens Database Rich Client RMI
ControllerView Logikk Persistens Database Mainframe Adapter
ControllerView Logikk Persistens Database Kø Eksternt system
Klønete teknologi
EAR WAR jar ejb-jar Application server jsp jar WAR jar jsp jar ejb-jar jar application.xml web.xml ejb-jar.xml 1. Edit (usually by hand) 2. Package (Typically Ant) 3. Deploy (Typically via GUI-tool) 4. Test (usually random clicking around)
(3)
Testing
Automatisert Testing
To formål
Kostnad for å innføre ny funksjonalitet
Kostnad for å unngå feil i ting som virket
(Dvs. regresjonsfeil)
Tre egenskaper
Dekningsgrad
(sjansen for at feil oppdages)
Robusthet
(sjansen for at korrekt endring får en test til å feile)
Testtid
(tid for å sjekke en endring)
Må understøttes av teknologi
(4)
Java i dag
Open Source
Samme modell
ControllerView Logikk Persistens Database
Enklere teknologier
Spring-MVCFreeMarker Spring Hibernate (JDBC) TopLink Seam iBatis Velocity Cocoon Struts (2) WebWork Wicket
Kan kjøre utenfor applikasjonsserver content/uploads/2007/05/reference-app-100.zip
Drift: EAR til applikasjonsserver Eller Unpack og kjør
1.Enhetstest på utviklers PC 2.Automatisk bygg på integrasjonsserver 3.Automatisk deployment på testserver 4.Kontroll på hva som inngår i en leveranse 5.Kontrollert utrulling av velkjent versjon i staging og produksjon
JUnit Subversion Continuous Integration Maven Maven Repository Auto- deploy Maven Test Production 1. Check in Developer Release manager Tester End user 2. Update 3. Publish snapshot 4. Download 5. Perform tests 7. Tag 8. Publish release 9. Download release
Java EE 5
ServletsJSP + JSF Session Beans JPA (entity beans) JDBC
Redusert konfigurasjon (ikke vist)
Applikasjonsservere er dyre...
... men så får man mye problemer for pengene
(5)
Java-syken
(som også har infisert.NET)
”Programmering i XML er ikke programmering”
”Alt er bedre med standarder”
”Programmering i bilder er ikke programmering”
”Smakstestoptimalisering”
Skyldig: Java EE firmaer
Skyldig: Microsoft!
Hva skal til for å komme helt i produksjon?
(6)
Hva betyr det å velge Java?
Open Source
Mange stemmer
Mye forandring
Det er kaotisk
Men vi får bedre løsninger
(Håper jeg)
Johannes Brodwall