<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.reflektis.nl/blogs/tag/J2EE/feed" rel="self" type="application/rss+xml"/><title>reflektis - Blog #J2EE</title><description>reflektis - Blog #J2EE</description><link>https://www.reflektis.nl/blogs/tag/J2EE</link><lastBuildDate>Mon, 07 Sep 2026 14:33:47 +0200</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[EJB's en OO]]></title><link>https://www.reflektis.nl/blogs/post/ejbs-en-oo</link><description><![CDATA[Het grote probleem bij de invoering van Java als onderdeel van transitietrajecten van organisaties is het gebrek aan vuistregels die aangeven op welke ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_tu4Hw063QR6bBf8yTIQkYQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_o5JcHtgYR5iZaErpkahhFw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_Ulg6WFDfSS-Oa_cGgVTqTw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_4fAY6zG4TBmLfPcEl6AmXA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">Het grote probleem bij de invoering van Java als onderdeel van transitietrajecten van organisaties is het gebrek aan vuistregels die aangeven op welke wijze de inzet van Java tools het beste kan plaatsvinden.</p><p>Er zijn mij nog geen publicaties bekend die een architectuur uitwerken gebaseerd op thin clients, communicerend met een server die als EJB container een multi-channel wereld bediend op een object-georiënteerde manier. De schrijvers van de bestaande publicaties maken zich vooral druk om de technologische implicaties van Java, hetgeen ook wel begrijpelijk is voor een jonge technologie.</p><figure class="wp-block-pullquote"><blockquote><p>Laten we het eerst maar draaiende krijgen, dan zien we later wel hoe we het goed kunnen doen.</p></blockquote></figure><p>Wat ik in dit artikel wil behandelen zijn de volgende vragen:</p><ol><li>Wat zijn de beperkingen van de EJB architectuur?</li><li>Zijn er mogelijkheden om deze beperkingen te omzeilen?</li><li>Wat zijn de consequenties van deze mogelijkheden voor de kosten-effectieve inzet van standaard componenten?</li></ol><p>Daarom kan dit artikel beschouwd worden als een aanzet om te komen tot een werkbare heuristiek voor het werken met deze technologie.</p><h2>Beperkingen huidige EJB architectuur</h2><p>Ik baseer mij op de Enterprise JavaBeans™ 1.1 Specification. Ik verwacht dat de 2.0 Specification geen schokkende wijzigingen zal aanbrengen.</p><h3>De Java bullet</h3><p>De thin client architectuur zoals die in de talloze publicaties rond Java wordt voorgesteld is een component architectuur die in feite gebaseerd is op een traditionele visie op automatisering.</p><figure class="wp-block-pullquote"><blockquote><p>Automatisering is datgene doen wat je al deed, maar nu geheel of gedeeltelijk ondersteund door computers.</p></blockquote></figure><p>Deze traditionele visie op client-server computing is het samenvoegen van</p><ul><li>presentatielogica (windows, buttons)</li><li>business logica (algoritmes en business rules)</li><li>data manipulatie logica (database verbindingen en SQL queries).</li></ul><p>De wijze waarop applicaties binnen deze visie hun ondersteuning boden was op zijn beurt weer gebaseerd op metaforen als:</p><ul><li>von Neumann architectuur: pak data – muteren data – zet data weer terug. Scheiding van functies en data</li><li>lopende band model van productielijnen</li></ul><p>Geautomatiseerde ondersteuning op deze wijze ingericht is het eenvoudigst te modelleren met procesmodellen of functionele modellen. Deze modellen kenmerken zich door een sequentieel denkmodel dat processen schetst in hapklare brokken.</p><p>Wat in&nbsp;multitier&nbsp;applicaties beoogd wordt is het verplaatsen van business logica en data manipulatie logica naar de server in de vorm van één of meer componenten. Dit heeft een groot aantal voordelen:</p><ol><li>Scalability&nbsp;in de zin van processen,&nbsp;threads, database connecties, netwerk sessies</li><li>Redundantie – replicatie en distributie</li><li>Gecentraliseerd management van code, versie, enz.</li></ol><p>De vooronderstellingen echter die aan de basis lagen van de&nbsp;fat-client&nbsp;architecturen die vaak op basis van&nbsp;two-tier&nbsp;applicaties geïmplementeerd werden, zijn niet of nauwelijks veranderd of zelfs niet geëxpliciteerd.</p><p>Ontwikkelingen in vakgebieden als cognitieve wetenschap, management wetenschap (met name procesindustrie als vliegtuigindustrie en automobielindustrie), en computerwetenschap hebben ondertussen een overweldigende hoeveelheid materiaal aangedragen waardoor dit procesdenken aan kritiek onderhevig is geraakt:</p><ol><li>Modelleren van parallelle processen is moeilijk – dit verhindert de ontwikkeling van&nbsp;massive parallel computing&nbsp;en gedistribueerde systemen.</li><li>Eenmaal geïmplementeerde sequentiële modellen zijn moeilijk uit elkaar te trekken. Dit kan gemotiveerd zijn door overwegingen van efficiëntie, maar ook in de procesindustrie door zaken als&nbsp;customer intimacy&nbsp;waardoor bouwen-op-maat noodzakelijk werd, of de productiviteitsverhoging die ontstond als gevolg van de herinrichting van productiemethoden waarin bijvoorbeeld een team verantwoordelijk werd voor het eindproduct (automobielindustrie).</li><li>Wijzigingen in het proces hebben gevolgen, vaak onverwacht, op allerlei plekken in de procesketen door talloze afhankelijkheden.</li></ol><figure class="wp-block-pullquote"><blockquote><p>Hoe&nbsp;een fabriek een auto maakt is niet belangrijk:&nbsp;dàt&nbsp;&nbsp;hij het doet wel.</p></blockquote></figure><p>De op de server aanwezige applicatiecomponenten in de EJB architectuur volgen exact dit denkmodel. Er zijn twee soorten van EJB componenten:</p><ul><li>Session beans&nbsp;– bevatten de state van de interactie met een specifieke&nbsp;client. Deze zijn in principe niet persistent, hoewel enige transactionele ondersteuning mogelijk is.</li><li>Entity beans&nbsp;– object representatie van persistente data. Dat deze persistente in de meeste gevallen relationeel is, is niet triviaal. Dat houdt onder meer in dat de&nbsp;&nbsp;&nbsp;entity beans&nbsp;die we meestal tegenkomen zich gedragen als niet meer dan&nbsp;data-containers.</li></ul><p>Enterprise Beans&nbsp;hebben nog een andere eigenaardigheid, namelijk het onderscheid tussen twee interfaces:</p><ul><li>Home interface – eigenlijk een&nbsp;factory interface&nbsp;voor het maken, vinden en verwijderen van&nbsp;enterprise beans.</li><li>Remote interface&nbsp;– die toegang geeft tot de methodes die de bean implementeert</li></ul><p>Mensen die niet geschoold zijn in object-oriëntatie zien dit onderscheid al heel snel als een uitnodiging om de&nbsp;remote interface&nbsp;te beschouwen als een functioneel component, gelijk aan het loskoppelen van functies en data dat zo belangrijk was in structured programming. Het is een opmerking die ik nog wel tegenkom in deze context: “ja maar data en functies moeten toch los van elkaar?”.</p><p>EJBObject, het object dat de&nbsp;remote interface&nbsp;dient te implementeren, is volgens de specificaties ook niet daadwerkelijk een onderdeel van de&nbsp;bean, maar van de container op de server waarbinnen de&nbsp;bean&nbsp;draait. Het is de&nbsp;application server&nbsp;die de container aanlevert. Clients werken in werkelijkheid niet met de bean, maar met EJBObject instanties, die dus eigenlijk als een soort wrapper op de bean functioneren. Nogmaals: dit zegt alleen iets over de wijze waarop de specificatie voorschrijft hoe Enterprise Beans, EJB Containers en application servers met elkaar samenwerken. Conceptueel is er geen reden om EJBObject instanties en de EJB zelf los te zien van elkaar, zelfs integendeel, en we zullen later zien wat hiervan de consequenties voor een effectief gebruik van deze technologie.</p><p>Een mogelijke implementatie van een systeem dat gebruik maakt van deze componenten is die waarin de session bean de implementatie bevat van functionele specificaties en procesmodellen, en de entity bean niet meer is dan een wrapper op de database tabellen. Veel bestaande business rules die in (of rond) de database waren geïmplementeerd worden hier eenvoudig hergebruikt. De IT infrastructuur gaat een nieuw tijdperk in, de managers zijn tevreden (“we zijn over op Java”), en de verwachtingen rond besparingen zijn groot:</p><ul><li>hergebruik</li><li>kunnen herinrichten van bedrijfsprocessen (bijvoorbeeld om nieuwe markten open te breken of op bestaande markten beter te kunnen concurreren)</li><li>outsourcing</li></ul><p>Dat de ontnuchtering snel zal komen is niet moeilijk te voorspellen. In feite is dit al aan het gebeuren, getuige de berichtgeving. Een boodschap die OO al jaren probeert te verkondigen, wordt namelijk schijnbaar achteloos geweld aangedaan. Men ziet het inzetten van Java technologie als een technologische oplossing waardoor deze problemen via de weg van de technologie, min of meer magisch, opgelost zullen worden. Bovendien waren de problemen misschien wel duidelijk, maar de manier waarop OO deze problemen dacht op te lossen lang niet – in feite zijn er maar weinig mensen die dit begrepen, getuige de kwaliteit van de meeste OO projecten. Een technologische oplossing is daardoor verleidelijk aantrekkelijk.</p><p>Technologische oplossingen voor een cognitief probleem moeten met groot wantrouwen bekeken worden. In de meeste gevallen zullen deze niet veel meer beogen dan het verhogen van de winst van de leverancier van de oplossing.</p><p>Ik wil in dit artikel niet uitgebreid ingaan op deze problematiek, maar verwijzen naar andere publicaties hierover.</p><h2>Java, maar dan goed</h2><p>Essentieel in de door mij geschetste aanpak zijn de volgende kwaliteitseisen:</p><ol><li>Geheel los van de technische applicatiearchitectuur is er een OO domein model beschikbaar in UML. Voor de eisen waaraan dit model moet voldoen, zie de andere artikelen op deze site, bijvoorbeeld de artikelen over <a href="https://blog.reflektis.nl/business-centred-architecturen-i/">Business Centred Architecturen</a>.</li><li>Op de server draait in een executable omgeving een implementatie van het OO business model. Dit zou beschouwd kunnen worden als een simulatiemodel omdat het daadwerkelijk <em>draait</em>. Deze applicatie noemen we in dit artikel de&nbsp;business server.</li><li>De implementatie van het business model kan e.v.t. met standaard componenten plaatsvinden. Dit is echter niet noodzakelijk. De architectuur is gebaseerd op de eis dat een transitie naar componenten transparant en incrementeel plaats kan vinden, en dat standaard componenten hier ingepast moeten kunnen worden.</li></ol><p>Wat zijn nu de mogelijke communicatielijnen met het op de server geïmplementeerde business model of domeinmodel? Ik noem enkele voorbeelden.</p><ol><li>Domein ↔ RMI (momenteel JRMP, later IIOP) ↔ Java Client.</li><li>Domein ↔ CORBA IDL via IIOP, of een COM/CORBA service via IIOP ↔ andere clients (bijvoorbeeld in Smalltalk geschreven).</li><li>Domein ↔ RMI ↔ ActiveX control dat zich gedraagt als een RMI client proxy ↔ Microsoft client.</li><li>Domein ↔ RMI ↔ Servlet ↔ Browsers via HTTP via de HTTP/Web server.</li><li>Domein ↔ (optioneel: Applicatie Server) ↔ HTTP/Web Server ↔ Servlet ↔ EJB componenten</li></ol><p>De architectuurstandaarden schrijven voor op welke wijze deze verschillende lagen aan elkaar gekoppeld worden. Het referentie architectuurmodel is gebaseerd op het volgende schema:</p><div class="wp-block-image"><figure class="aligncenter size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/SAF1_2.png" alt="" class="wp-image-12121"/><figcaption>Service Architecture Framework</figcaption></figure></div>
<p>Hopelijk is voldoende duidelijk geworden dat deze applicatie, die waarin het business model dus draait, centraal staat in de informatie architectuur. De koppeling met de ondersteunende systemen zoals de J2EE architectuur is niet triviaal. Er zijn twee aspecten die hierin zorgvuldig onderzocht moeten worden:</p><ol><li>Niet functionele requirements zoals fail-over, clustering, load-balancing en performance, alsmede load-scalability</li><li>Gebruik van eenvoudige standaard adapters voor de koppeling</li></ol><h3>Niet-functionele requirements</h3><p>Bij de toepassing van de architectuur zoals die in dit artikel wordt voorgesteld is het van belang om aan dit punt extra aandacht te schenken omdat de methode namelijk zo weinig mogelijk gebruik maakt van technologische oplossingen om het business model te implementeren. Hierdoor kan dit onderdeel het meest gevoelig zijn voor de eisen die in een gedistribueerde omgeving aan performance worden gesteld. De vergelijking kan gemaakt worden met de traditionele transactiemonitoren die in een periode waarin het aantal interacties met bestaande databases sneller groeide dan de software van die tijd aankon een oplossing kon bieden door software die in staat was 100 transacties per seconde te doen op te schalen naar 1000 of 10.000 transacties per seconde. Dezelfde software kon gebruikt blijven worden, alleen de transactiemonitor zat als een schil om die software heen.</p><h3>Adapter-technologie voor de koppeling</h3><p>Aangezien alle complexiteit in termen van business complexiteit is geïmplementeerd op de business server is er een bonus voor de aangekoppelde systemen: deze kunnen aanzienlijk eenvoudiger, en daardoor sneller en goedkoper, ontwikkeld worden dan voorheen.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 04 Jul 2001 20:35:22 +0200</pubDate></item><item><title><![CDATA[Onder de loep: Java Enterprise Edition]]></title><link>https://www.reflektis.nl/blogs/post/onder-de-loep-java-enterprise-edition</link><description><![CDATA[Met de opkomst van de Java 2 Enterprise Edition (J2EE) van Sun is voor veel organisaties de vraag actueel of zij met deze architectuur aan het werk wi ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_cjr3KsHJRQq1FYWJ0eLHSQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_K2rbmK2aQ1iBei24uKcGhw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_hMgweSBJSbCR-6mnR654eQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_dXNnFHrGRUm12_AYUmk0Aw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">Met de opkomst van de Java 2 Enterprise Edition (J2EE) van Sun is voor veel organisaties de vraag actueel of zij met deze architectuur aan het werk willen. Sommigen zullen misschien zelfs het gevoel hebben dat zij dat moeten, en dat er geen alternatieven zijn.</p><p>De situatie voor veel organisaties is immers dat er telkens momenten aanbreken voor vernieuwing van bestaande systemen. De overwegingen die dan gemaakt moeten worden zijn niet altijd gebaseerd op concrete overwegingen en zijn vaak ook gevoelsmatig.</p><p>Wat zijn de concrete overwegingen?</p><ol><li>De ondersteuning voor bestaande technologie is te duur geworden.</li><li>De bereidheid van het personeel om met de bestaande technologie te werken is aan het verminderen (ook een gevoelsmatig argument vanuit de medewerker bekeken maar zeker een concreet argument in termen van beschikbaarheid van personeel).</li><li>De bestaande technologie is niet of te kostbaar in staat mee te gaan in veranderende eisen wat betreft functionaliteit en beschikbaarheid.</li><li>Er is een wildgroei ontstaan van oplossingen die allemaal gebruik maken van verschillende technologische middelen, en vanuit beheersmatig oogpunt is deze situatie contraproductief geworden.</li></ol><p>Vanuit beheersmatig perspectief zijn dit argumenten die niet altijd voldoende gevalideerd worden. Er is iemand die het roept, en het klinkt wel plausibel, en wanneer een guru in het veld ook zoiets roept is het al snel een waarheid gegoten in beton. De vraag stellen of het wel waar is wordt vaak zelfs niet gewaardeerd, en afgedaan als demotiverend. Wanneer een leidinggevende zijn positie dacht te versterken door de nieuwe tools te introduceren kan het stellen van de vraag zelfs nog vervelender consequenties hebben: de criticaster wordt uit de organisatie verwijderd!</p><p>Laten we echter uitgaan van een positief scenario en aannemen dat de organisatie tot de vernieuwende impuls is gekomen door een weldoordacht en beheerst proces. Wat zijn dan de gevolgen?</p><p>Er is als het ware een vacuüm ontstaan in de organisatie. De vraag is gesteld, het antwoord moet nog worden gevonden. Zodra bestaande IT bedrijven van dit vacuüm op de hoogte geraken moet de organisatie wel heel sterk in haar schoenen staan om de stortvloed van “deskundig” advies te doorstaan en daarbij de zinnen te bewaren. Consultants verschijnen uit alle hoeken en gaten, en wie daarbij in staat is als eerste een redelijk gedegen indruk te maken heeft het fundament gelegd voor een uiterst boeiend spel van veranderingsprocessen. Mensen met een andere boodschap worden niet echt gewaardeerd, men moet immers een keus maken, en telkens een andere weg inslaan zou nergens toe leiden. Kritiek in de beginfase is ook niet echt populair. De technische mensen raken er alleen maar van slag van, worstelend als zij zijn om nieuwe kennis te verwerken, en hun managers zijn niet in staat om de argumenten te beoordelen en denken alleen maar aan hoeveel het kost en hoe de overgang zo snel en goedkoop mogelijk te doen verlopen.</p><p>In dat vacuüm valt nu J2EE. Een technologie die nog steeds het aura om zich heen heeft van Java, namelijk het is nieuw, het is sexy, en vooral: het is cool. Ieder bedrijf wil wel iets meepikken van die uitstraling toch? Bovendien heeft het verhaal van J2EE een aantal onderdelen die verdomd interessant klinken: bestaande databases kunnen gewoon gebruikt worden, bonen op de server maken deze transparant beschikbaar in een multichannel omgeving: internet, WAP, voice-respons systemen. De leverancier van de applicatieservers leveren steeds meer ondersteuning voor andere “legacy” systemen als ERP en CRM systemen en de wereld voor een IT manager begint plotseling een stuk meer licht toe te laten.</p><p>Dat er aan het verhaal een aantal onderbelichte vraagstukken kleven is, zoals ik al zei, niet populair om te roepen. Wat zijn nu die onderbelichte vragen?</p><ol><li>Het is nieuwe technologie. Wat zijn hiervan de gevolgen voor stabiliteit, ondersteuning door tools, deskundigheid van de adviseurs?</li><li>Het lijkt op wat we al deden, in feite kunnen we gewoon doorgaan met wat we al deden. Dat klinkt aantrekkelijk maar is het dat wel? Wat waren de oorzaken van problemen in het verleden? Zijn deze oorzaken nu echt verdwenen door het sexy aura van Java?</li><li>De manier van toepassen van nieuwe technologie en tools is in het verleden altijd iets dat jaren nodig had om de heuristiek te ontwikkelen voor efficiënte toepassing. Deze heuristiek is er nu (nog) niet.</li><li>We passen de nieuwe tools toe door zoveel mogelijk te doen wat we al deden en het aan de leverancier van de tools over te laten de voordelen van de technologie transparant voor ons beschikbaar te stellen. Is dit wel de manier om nieuwe mogelijkheden te benutten?</li><li>Zijn de belangen van leveranciers in deze niet strijdig met die van de afnemers en maken we ons op die manier niet alleen maar nog meer afhankelijk van die leveranciers?</li><li>Zijn er ook alternatieven, en in hoeverre sluiten die aan op J2EE?</li></ol><p>Het stellen van vragen is iets dat we op school geleerd hebben als een belangrijke vaardigheid, laten we bij het toepassen van nieuwe technologieën hiermee vooral doorgaan.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 14 Jun 2001 16:39:19 +0200</pubDate></item></channel></rss>