Webobjects

Webobjects, stiliserat som WebObjects, är en applikationsserver som har i sitt ursprung i företaget Next som grundades av Steve Jobs. I och med att företaget och dess grunder köptes (tillbaka) av Apple 1996 följde teknologin med till Apple.

Bakgrund
Webobjects var världens första webbapplikationsserver när den lanserades 1996 av Next och medförde att man på mycket kort tid kunde utveckla komplexa webbapplikationer och detta gjorde att många amerikanska storföretag som till exempel Disney satsade på att utveckla lösningar ovanpå Webobjects. Produkten var vid den tiden exklusivt inriktad på företagsmarknaden med ett pris på 50 000 USD och var baserad på Objective-C. I och med att Apple tog över utvecklingen av produkten skrevs produkten om till att bli till 100% baserad på Java-teknologi och idag är plattformen certifierad att köras på J2EE-baserade servrar om man så vill. Priset sänktes också kring 2001 till 700 USD, vilket av naturlig skäl ledde till en smärre chock för dem som en månad tidigare betalt det gamla priset.

Utvecklingsmiljön till Webobjects fanns tidigare inte på MacOS 7,8,9 utan man var hänvisad till Windows eller den gamla hybridprodukten Mac OS X Server 1 (en slags prototyp till nuvarande opertivsystemet). Formellt var driftsättning certifierad på Mac OS X Server, Windows 2000 och Solaris 8 men eftersom endast Java 2 Standard Edition krävs för att köra den inbyggda servern var det många som också använde Linux. Den senaste förändringen innebär att Webobjects är gratis och ingår numera i Apples nya utvecklingsmiljö Xcode vilket innebär att Mac OS X för utveckling och Mac OS X Server är de enda certifierade plattformen. Licensen tillåter dock gratis driftsättning på valfri plattform eller som War-fil i en J2EE-container.

Vad är Webobjects egentligen?
Webobjects som begrepp är inledningsvis lite förvirrande eftersom det egentligen är tre saker:
 En J2SE-baserad applikationsserver
 En uppsättnings utvecklingsmoduler (Webobjects Builder, Webservices Assistant, Enterprise Objects Modeler tillsammans med Xcode)
 En uppsättning klasser och ramverk för snabb utveckling av webb- och javaklientbaserade tjänster.

Tekniken
Tekniken i Webobjects har sedan starten byggt på en uppdelning i applikationer i tre lager.

Databaslagret/EOF
Det undre lagret består av databashanteraren som kan vara i princip valfri SQL-baserad DBMS - det enda kravet är att det finns en JDBC-drivrutin. Databaslagret med dess tabeller, fält och relationer mappas med hjälp och verktyget Enterprise Objects Modeler till Javaklasser som läggs till projektet. Dessa klasser implementerar sedan Enterprise Objects Framework (EOF) som innehåller alla funktioner för att läsa, cacha och skriva till databasen. Det är till och med så att utvecklaren inte behöver skriva en enda rad SQL-kod utan begär bara Java-objekt i sin kod som vid behov läses och skrivs till databasen. Detta innebär också att det är möjligt att byta databashanterare även i mycket stora applikationer utan att behöva skriva om alla kod.

Webgränssnitt
Webobjects Builder är i grunden WYSIWIG (nästan) en HMTL-editor men som har möjligheten att både exponera klasserna som genererades av Enterprise Objects Modeler men också de Javaklasser som finns i applikationen i övrigt. På så sätt kan man med hjälp av drag-and-drop koppla såväl datakällor som variabler och funktioner till olika objekt på sin webbsida. Webobjects Builder kan också skapa grunden för variabler och funktioner i den underliggande Javakoden med en enkel knapptryckning.

Javakod (Business logic)
Slutligen används Xcode för att hålla ihop projektet med definitionsfiler för EO Modeler, HTML-koden och bindingarna samt själva Java-klasserna. Xcode har stöd för en mängd olika programspråk, däribland Java med bland annat code-completion för Java/Webobjects. I Xcode skriver man själva logiken för sin webbapplikation och implementerar då Webobjects Framework som innehåller massor av funktioner för att skapa webbsidor och associerade funktioner för detta. Det är också relativt lätt att inkludera externa klasser som implementerar olika specialfunktioner för generering av PDF:er, diagram, bildhantering och annat.

Web Services
I och med att utvecklingen av s.k. Web Services tagit stormsteg framåt har även Webobjects fått stöd för att både konsumera och producera sådana tjänster och det görs med Webservices Assistant som i många fall innebär att man kan skapa grunden till en tjänst utan att skriva en rad kod.

Regelmotor
Ovanpå allt detta finns kanske den mest avancerade delen och det är regelmotorn. Om EOF automatiskt genererar SQL-kod så kan man säga att denna automatiskt genererar Javakod och det innebär att om man tar sig det extra jobbet att implementera detta ramverk kan man på mycket kort tid generera en stor mängd kod för sin webbapplikation. Ett exempel på detta är om man bygger en applikation med en rad tabeller som tillsammans ska länkas ihop för att bygga ett system för att hantera innehåll på webben. Då behövs tabeller för att lagra en mängd olika typer av data och alla dessa behöver ett eget admingränssnitt. Istället för att göra alla dessa till egna komponenter kan man istället genom regelmotorn konfigurera denna så att dessas gränssnitt och koden för dessa generaras. På så sätt går det också mycket snabbare att göra förändringar eftersom även denna del av applikationen kan konfigureras istället för kodas/utvecklas.

Webobjects har dessutom klasser för att använda en Javaklient som gränssnitt istället för en webbläsare. Plattformen har också stöd för XML implementerat varför det också är möjligt att generera XHTML, WML eller annat XML-baserat innehåll.

Externa länkar 
Officiell webbplats på Apples webbplats

Serverprogram