Det IBMs udviklere arbejder med lige nu er på sin vis revolutionerende, hvis man sammenligner med den traditionelle WAS/RAD software stak. Som repræsentant for Lund&Bendsen har Nicky Mølholm nøje fulgt den nye stak siden arbejdet på den blev lanceret i oktober og han arbejder aktivt sammen med udviklerne på nævnte produkter som “Java EE tester”.
For blot lidt over et halvt år siden udgav IBM deres Java EE 6 certificerede Application Server flagskib: WebSphere Application Server v8.0. Men det stopper ikke her:

  • I skrivende stund knokler IBM’s WebSphere udviklere med at levere den næste udgave af WebSphere Application Server: WAS v8.5.
  • På samme tid er IBM’s Rational udviklere i gang med at levere Eclipse værktøjerne til WAS v8.5.

Det udviklerne arbejder med lige nu er på sin vis revolutionerende, hvis man sammenligner med den traditionelle WAS/RAD software stak. Som repræsentant for Lund&Bendsen har jeg nøje fulgt den nye stak siden arbejdet på den blev lanceret i oktober og jeg arbejder aktivt sammen med udviklerne på nævnte produkter som “Java EE tester”. Herunder kan du læse mere om mine erfaringer med WAS v8.5 platformen.

Bemærk at alt det materiale du finder herunder tager udgangspunkt i den seneste udgave af WAS v8.5 platformen – dvs den beta udgave som blev offentligtgjort i marts, 2012.

IBM’s nye strategi: Åbenhed, inddragelse og udviklervenlighed

Det er en lidt vovet overskrift, for IBM har jo naturligvis masser af strategier. Men her forsøger jeg at beskrive, de tre mest betydende indtryk jeg har fået ifm WAS v8.5 strategien:

Åbenhed: IBM offentliggjorde allerede i oktober at de arbejdede på næste generation af WAS platformen. I forbindelse med WAS v8.5 platformen har IBM oprettet et nyt Web site kaldet “WASdev community” som ligger på wasdev.net. Her finder du information om WAS v8.5, RAD v8.5 samt WDT eclipse værktøjerne. Websitet er aktivt og kommende relaterede nyheder dukker først op her. IBM har også lanceret et WAS v8.5 twitter område: https://twitter.com/#!/wasdevnet. Så hvis du vil være firstmover på WAS – så hold et vågent øje med disse steder.

Inddragelse: Allerede på forsiden af wasdev.net community sitet bliver man opfordret til at hjælpe IBM med at forme næste generation af WAS. Sitet linker blandt andet til WASdev forumet på developerWorks. Her deler udviklere, som du og jeg, ønsker til produktfamilien samt de eventuelle problemer, man har oplevet i forbindelse med produktanvendelsen. Forumet er aktivt og man er i direkte kontakt med IBM Software lab udviklere fra England, USA og Canada.

Udviklervenlighed: Tidligere udgaver af WAS har i alt fortrolighed nok været anset som “tunge” og “dyre” application servere. Min helt personlige holdning er dog, at WAS 7.0 og WAS 8.0 udgaverne efterhånden er ved at gøre op med disse fordomme. Men det vi har udsigt til i WAS v8.5 platformen er langt mere innovativt:

  • For det første tilbydes nu en WAS v8.5 Liberty Profile udgave af WAS, der er lynende hurtig at (gen)starte, ingenting fylder og som tilmed er nem at overskue ifm udvikling og adminstration.
  • For det andet kan du nu anvende gratis Eclipse plugins (WDT tools) til udvikling af WAS 7.0+8.0+8.5 applikationer. Det står jo i skærende kontrast til den traditionelle løsning: Rational Application Developer for WebSphere (RAD).

Du kan læse lidt mere om Liberty Profile samt Eclipse værktøjerne herunder.

WAS v8.5 Full Profile

Lad os starte med den kedelige(?) nyhed først: WAS v8.5 minder utroligt meget om WAS v8.0. Når jeg skriver WAS v8.5 Full Profile i overskriften – så mener jeg i øvrigt “den normale” store WAS udgave. WAS v8.5 er altså ligesom WAS v8.0 en Java EE 6 server – så du har adgang til CDI, JAX-RS, EJB 3.1, osv.

Faktisk er der ikke de store nyheder at spore her. WAS v8.5 ligner WAS v8.0 funktionelt, i folderstruktur, anvendelse, såvel som hastighed og størrelse. Herunder kan du se folder-layoutet for installationen af en WAS v8.5 samt en nyoprettet profil (AppSrv01):

Dette layout har ikke forandret sig. Kigger man i “bin/” folderne så finder man de sædvanlige scripts som fx startServer.bat, startNode.bat, mv. Og starter man WAS v8.5 og peger browseren på http://localhost:9060/ibm/console så ser man den samme Integrated Solution Console (ISC) administrationskonsol, som man er vant til.

Men der er rent faktisk et par store nyheder. Den helt store nyhed er, at WAS v8.5 nu giver dig mulighed for at køre serveren på en IBM JDK 7! Det giver dig blandt andet adgang til moderne features som multcatch, try-with resurse anvendelse, osv. En anden stor nyhed er, at man nu har support for EJB’ere i OSGi Java EE applikationer. Du kan læse på wasdev.net.

Den allerstørste nyhed: WAS v8.5 Liberty Profile

Her har vi velsagtens den allerstørste nyhed af dem alle i WAS v8.5 stakken: en ny application server profil, kaldet Liberty Profile.

Java EE 6 standarden har introduceret profil begrebet. Der blev defineret en enkelt profil med standarden, kaldet Java EE Web Profile. Men selve profilbegrebet var ret åbent, fx kunne man have en Portlet Profile, Mobile Profile osv. Det IBM har gjort her er at lave deres egen Liberty Profile. Lad os fjerne enhver forvirring nu: Liberty Profile er ikke WAS v8.5’s Web profile udgave. Sådan en findes slet ikke (endnu). Derimod er Liberty Profile en udgave af WAS, som er fantastisk udvikler-venlig! Se bare her:

  • Serveren kører på de fleste platforme (Windows, Linux, zOS, MAC OS)!
  • Serveren fylder ikke noget (< 50 MB)!
  • Den starter på under 5 sekunder!
  • Den ejer ikke nogen grafisk administrationskonsol!
  • Dens konfiguration er til at forstå!
  • Dens fejlbeskeder er til at forstå!
  • Du vælger hvad der skal i den!

Faktisk minder Liberty Profile en lille smule om de tidlige JBoss Application Server udgaver ;-).

En af de “vigtige” pointer i Liberty Profile er at den anvender samme kode som WAS BASE produkterne (BASE, ND, zOS, mv). Mere specifikt finder du altså samme OSGi bundle kode internt i serverne. Så her har vi en server, man burde kunne udvikle en Java EE applikation på for herefter at installere applikationen på et traditionelt WAS v8.5 cluster. Det vil sige, at hvis du er en af de udviklere som anvender Tomcat (/Jetty/JBoss) mv som et letvægts udviklingsværktøj og senere deployer på en WAS server – så har du  her en drop-in erstatning.

Installationen

Liberty Profile installeres ikke ved hjælp af IBM’s Installation Manager produkt. Faktisk er det blot en ZIP fil, som du downloader og pakker ud et eller andet sted på disken. Erfarne WAS udviklere vil nok få sig lidt af et chok over dette… men også over at installationen ser således ud:

Sammenlign eventuelt denne folderstruktur med den tidligere for WAS v8.5 ! Sikke en forskel, ikke? I øvrigt kan jeg nævne, at WAS v8.5 Full Profile fylder 1,2 GB på min maskine – hvorimod WAS v8.5 Liberty Profile fylder 31 MB.

Kigger man i “bin/” folderen under installationsfolderen så ser man kun 2 x scripts – det vigtigste er was4d:

Scriptet giver dig grundlæggende blot mulighed for at oprette server instanser (a la profiler i WAS BASE familien) og starte/stoppe dem. Som sagt starter serveren på under 5 sekunder – også i virkeligheden 🙂

Administration

Som nævnt er der ikke nogen administrationskonsol som i WAS v8.5 Full Profile (BASE familien). Installation og afinstallation af applikationer foregår ved at kopiere/slette WAR/EAR filer fra “dropins/” folderen. Alternativt kan man erklære dem i konfigurationsfilen (ser herunder), hvor man har lidt flere muligheder, som fx at tilknytte sikkerhedsopsætning.

Det centrale redskab til at styre administrationen af Liberty Profile er filen “server.xml” (se forrige skærmbillede). Denne fil er utrolig nem at overskue og giver dig mulighed for at definere DB driver, DataSources, installerede applikationer, sikkerhedsopsætning, mv, Men nok mest betydningsfuldt af alle muligheder: det er også her, du vælger hvilke features, der skal være aktive i server instansen. Her er et eksempel:

Prøv lige at se her! Denne fil viser opsætningen af en JDBC Provider (driver), DataSource (connection pool) og ikke mindst hvilke features vi ønsker aktiveret i serveren, her: JPA 2.0, JDBC 4.0 og Servlet 3.0. Man behøver ikke være WAS administrationsnørd for at sætte det op. Faktisk kan man bare copy-paste en sådan opsætning fra en kollega. Se det som en modsætning til den sædvanlige WAS praksis, hvor man fx følger et word-dokument med en lang walk-through i en administrationskonsol eller, endnu bedre, kører et jython script, der automatisk konfigurerer serveren.

I Liberty Profile har man øvrigt også mulighed for at tage en hel server, zippe den og sende den til en kollega, hvorefter hun kan åbne den og arbejde videre med en fuld server-opsætning! Eller hvad med at checke den maskinuafhængige server.xml fil ind i dit SCM ? Du bestemmer selv ;).

Det er da nye tider for WAS, hvad?

Features: Dem du KAN anvende lige nu!

I skrivende stund er WAS v8.5 Liberty Profile, samt Full Profile, en beta udgave. Den har været igennem en Alpha og en Alpha refresh før den kom i beta. Fra gang til gang er der sket en hel del tilføjelser. Så listen du ser herunder indeholder altså ikke nødvendigvis alt det, du vil finde i den endelige WAS v8.5 Liberty Profile.

På frontend siden kan du anvende: Servlet 3.0, JSP 2.2, JSF 2.0, JAX-RS 1.1 og Bean Validation 1.0.

På backend siden kan du anvende: JDBC 4.0, JPA 2.0.

På diverse siden (!) kan du:

  • Anvende Java EE sikkerhed (rolle baseret. her kun Web sikkerhed)
    >> Brugerrepositoriet kan være LDAP (men ikke federeret/DB endnu).
  • Opsætte SSL sikkerhed for din Web applikation.
  • Udvikle Java EE applikationer per OSGi Blueprint specifikationen.
    >> Det er i øvrigt den specifikation som er voldsomt inspireret af Spring frameworket.

Ovenstående er de vigtigste features som Liberty Profile understøtter lige nu. Du kan finde en 2-3 yderligere features i den fulde liste, som du finder i [InfoCenter-fullfeaturelist] (se litteraturlisten i slutningen).

Features: Dem du MANGLER lige nu !

Der er desværre en lille del af de populære Java EE 6 teknologier, som man endnu ikke kan anvende i Liberty Profile. På developerWorks WASdev forum’et har jeg selv, samt mange andre udviklere, gjort opmærksom på, at serverens popularitet afhænger af, om den tilbyder disse teknologier også.

For at komme til sagen – så kan du fx ikke anvende:

  • CDI – Contexts and Dependency Injection:
    Den nye standardiserede DI model for Java EE applikationer som minder lidt om Java Based Config fra Spring 3.1 frameworket.
  • JAX-WS:
    Teknologien, som giver dig mulighed for at udstille SOAP baserede Web services og udvikle SOAP baserede Web service klienter.
  • Java Message Service (JMS)
  • Enterprise Java Beans (EJB)
    Teknologien, som giver dig trådsikre beans, remoting via RMI/IIOP, deklarativ sikkerhed og deklarativ transaktionsstyring.

Du må altså, med den nuværende beta-udgave, undvære disse teknologier. Mit bud er, at IBM WebSphere teamet presser CDI ind i det endelige produkt. Men det er kun mit eget bud – selvom jeg samarbejder med udviklerne, så har jeg desværre ikke adgang til deres fortrolige planer.

Helt personligt håber jeg, at der også bliver plads til EJB Lite (yep: korrekt stavemåde) – som jo altså definerer et subset af EJB 3.1 core specifikationen. Det der nemlig (endnu ikke) er standardiseret i CDI er anvendelsen af populære deklarative features som trådsikkerhed, transaktionsstyring og sikkerhed – så her slipper vi altså ikke helt for EJB’erne. Men husk på, at en EJB 3.1 bean faktisk er ganske elegant – og særdeles uigenkendelig, hvis man kommer fra en EJB 2.x baggrund; det ligner nemlig en helt normal Java POJO i Java EE 6.

Værktøjer: RAD v8.5

Normalt udgiver IBM i forbindelse med nye WebSphere Application Server-udgaver også nye Rational Application Developer for WebSphere (RAD) udgaver. Denne ombæring er ikke nogen undtagelse.

Som det er tilfældet med WAS v8.5 Full Profile, så er der faktisk ikke de helt store nyheder her. Der er naturligvis et væld af smånyheder – men ikke nogen, som jeg vurderer er banebrydende. For at gøre det kort, så er de vigtigste nyheder i RAD v8.5 Beta 1:

  • Support for WAS v8.5 – inklusive Liberty Profile serveren
  • Java 7 support (!)
  • DOJO Server Faces Tools er nu tilgængelige i RAD selv
  • JSF UI komponent paletten indeholder nu JSF standard og JSF Facelets komponenter
  • OSGi/EJB support værktøjer

Læs mere om nyhederne i RAD i [InfoCenter-radfeaturelist].

Værktøjer: Gratis WAS Eclipse plugins !

I forbindelse med WAS v8.5 arbejdet har Rational teamet også udviklet et gratis sæt plugins kaldet WAS Developer Tools for Eclipse. Forkortet “WDT”. De her plugins giver dig et letvægts alternativ til RAD IDE’en hvormed du kan deploye applikationer til/fra og adminstrere servere. Server supporten inkluderer:

  • WAS v7.0
  • WAS v8.0
  • WAS v8.5
  • WAS v8.5 Liberty Profile

For at anvende disse plugins skal du enten have en Eclipse IDE for Java EE Developers 3.6.2 (Helios) eller en Eclipse IDE for Java EE Developers v3.7.1 (Indigo). Hvis du anvender Indigo så har du heldet med dig – Indigo indholder nemlig Eclipses nye “Marketplace” funktionalitet. Den finder man fra menuen “Help > Eclipse Marketplace…”:

– herinde kan du så søge på “WebSphere” og vælge at installere de ønskede WDT plugins – nemt ikke?

Herunder kan du læse lidt om de WDT plugins, man får specifikt målrettet WAS v8.5 Liberty Profile. Men husk på, at der altså også er funktionalitet, som er målrettet WAS v7.0/8.0/8.5 (Full Profile).

Når du har installeret WDT plugins for Liberty Profile, får du fx tilføjet supporten i “Servers” viewet:

Her kan du, som i RAD trække og slippe projekter ind over din server. Men i modsætning til RAD, håndteres almindelige WAR moduler også (der kræves m.a.o. altså ikke EAR wrapper projekter). Start/stop af serveren, samt hot deployment fungerer som forventet. Med Liberty Profile WDT plugins’ne får du endvidere et nyt view kaldet “WebSphere Runtime Explorer”:

Det kan du bruge til at “opdage” dine server-instanser og efterfølgende tilføje dem til “Servers” viewet (som du så tidligere). Jeg har ikke undersøgt om viewet også fungerer til WAS BASE familien – men mon ikke?

Slutteligt får du med Liberty Profile WDT pluginsn’e også en WYSIWYG editor til “server.xml” filen:

– så behøver du ikke huske på alle elementerne selv.

Hvis man kigger på “Source” viewet (en tab i bunden af editoren, som er udeladt herover) så har man, som forventeligt, også content-assist til valg af elementer, attributter mv.

Min personlige vurdering

Jeg har primært fokuseret på aftestning af WAS v8.5 Liberty Profile serveren. Som sagt har jeg fulgt den siden den blev lanceret i 2011 og jeg må sige, det har været en fornøjelse. Serveren starter rent faktisk lynhurtigt op, er hurtig til at opdage opdateringer til konfigurationen (fx. DataSource registrering) og applikationer. Faktisk er mit ydmyge indtryk, at den snildt matcher, og af og til overgår, andre lynhurtige servere som Glassfish og Tomcat. Men det er jo en smagssag, da jeg ikke har lavet strukturerede sammenligninger – og er stærkt farvet af min begejstring for WebSphere’s innovation pt ;-).

Faktisk har jeg på det seneste også rodet en smule med JBoss 7.1. JBoss 7.1 har blandt andet den force, at den er en komplet certificeret Java EE 6 server. Derudover starter serveren også enormt hurtigt op. Men den er ikke lige så hurtig til at starte som WAS v8.5 Liberty Profile. Og, set fra mit synspunkt, er JBoss 7.1 ikke mere så nem at administrere og overskue som fx JBoss 3,4,5 serien var – og slet ikke som enkel som WAS v8.5 Liberty Profile.

Hvad angår Eclipse plugins supporten, så er jeg positivt overrasket. De fungerer ganske glimrende og hot (re)deployment fungerer godt. Faktisk har jeg langt flere problemer med at få JBoss Tools (Eclipse plugins) til at fungere lige så godt. Når jeg arbejder med sidstnævnte mod JBoss 7.1 så må jeg blot konstatere, at jeg tit og ofte skal foretage applikations re-installationer og desværre af og til bliver nødt til at genstarte serveren. Det bliver man også nødt til med Liberty Profile – men jeg vurderer, at det slet ikke er så tit – og det er jo rigtigt godt gået, når man tænker over, at vi snakker om beta produkter over hele linjen!

Så umiddelbart har jeg en masse ros til overs for WAS v8.5 Liberty Profile. Men jeg må dog også sige at jeg savner CDI blandt serverens feature liste. EJB 3.1 lite ville også være et fantastisk supplement – men jeg tror nu ikke IBM får presset denne teknologi ind i den endelige udgave. Måske i en senere version?

Hvad angår WAS v8.5 Full Profile, ellere rettere blot WAS v8.5, så er jeg rigtigt skuffet for at sige det mildt. Min kritik, som jeg i øvrigt (til dels) har skrevet i et indlæg til developerWorks WASdev forumet, er primært at serveren:

  • Fylder 1GB+
    Den slæber jo så i øvrigt også rundt med alternativ kode til alle platforme som WAS understøtter, herunder fx zOS. På WASdev forumet er jeg blevet gjort opmærksom på, at man nu kan lave en customiseret download, så den ikke fylder helt så meget som tidligere.
  • Er langsom i opstart
    Hvis man sammenligner med Liberty Profile, Tomcat, Glassfish, TomEE, mf
  • Er svær at overskue administrativt og funktionelt
    Det er den jo ikke for WAS guruer. Men for den normale Java udvikler, så er WAS v8.5 Liberty Profile langt mere tilgængelig.
  • Fungerer ikke (umiddelbart) gnidningsløst på Ubuntu, Mac OS og andre eksotiske OS varianter.

Når disse kritikpunkter er rejst, så skal man selvfølgelig også huske på, at WAS v8.5 Full Profile jo kan et væld af yderligere ting end det Liberty Profile kan præstere. Herunder: High Availability (session replikation, RMI/IIOP failover), cluster opsætning (nemt!), grafisk administrationskonsol, administrativ scripting (TCL, Jython), Java EE 6 certificeret server, PME (IBM’s value add-on), vanvittig moderne WS-* stak, indbygget JMS server, osv osv.

Hvad skal der så ske i fremtiden ?

Jeg lidt bekymret for det langsigtede mål med serverne. Der er ingen tvivl om, at WAS v8.5 Liberty Profile er markant anderledes end WAS v8.5 Full Profile. Selve produktet, set fra et administrativt og udviklingsmæssigt synspunkt, kan næsten ikke minde mindre om den klassiske WAS BASE.
Så helt grundlæggende, kunne jeg godt tænke mig svar på følgende (fra Labs / IBM):

  • Har IBM tænkt sig, at WAS v8.5 og WAS v8.5 Liberty Profile arkitekturen og funktionaliteterne skal smelte sammen?
    …eller…
  • Er de ved at skabe et fragmenteret marked, som minder om WAS Community Edition til “legetøjsprojekter” og WAS BASE familien til “rigtige” projekter?

Min bekymring hænger sammen med det sidste spørgsmål. Hvis det sker, så frygter jeg, at ingen af produkterne bliver en reel success. Og hvis de alligevel gør, så kunne vi få et marked, hvor WAS udviklere bliver splittet på komptencerne (Liberty Profile vs Full Profile). Ydermere kan samme administrative elementer (scripts, xml filer mv) ikke  anvendes til begge produkter. Og hvis man ønsker PME’er, eller ekstraordinær WS-* support, så bliver man nødt til at fravælge Liberty Profile.

De her bekymringer har jeg luftet for de udviklere i IBM. som jeg samarbejder med – men de må ikke sige noget om deres langsigtede planer (og det har de faktisk heller ikke gjort). Så vi bliver nødt til at vente lidt på de officielle udmeldinger.

Konklusion på mindre end 10 linjer!

WAS v8.5 Full Profile har ikke forandret sig det store – men vi ser frem til en Java EE 6 server med Java 7 support 🙂

WAS v8.5 Liberty Profile er et produkt med et fantastisk potentiale. Det har chancen for at vinde traditionelle Glassfish/JBoss udviklere over til sig.

Hvis du udvikler mod WAS v7.0, v8.0 eller v8.5, så kan du nu hente gratis plugins og du har dermed en reel chance for at fravælge Rational’s flagskib: RAD.

Litteraturliste

[InfoCenter-radfeaturelist] Titel: “What’s new in Rational Application Developer for WebSphere Software”

[InfoCenter-fullfeaturelist] Titel: “Liberty profile: Server features”