[java] Wie is al helemaal in love met Spring?

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik ben zelf nu al een 3 kwart jaar bezig met Spring en naarmate ik er meer van afweet en langer mee werk, naarmate ik er gekker op wordt. Voor de mensen die niet weten wat Spring is:

Spring is een platform van componenten die het gebruik van J2EE een stuk eenvoudiger maken. Een van de mission statements is dat Spring geen api`s na gaat maken als daar al goeie alternatieven voor zijn. Dus Spring is bv geen OR mapper zoals Hibernate.

Maar wat is Spring dan wel? Dat vond ik in het begin eigelijk vrij onduidelijk.. waar ligt de grens tusse Spring en andere tools?. De basis van Spring is een Inversion of Control container. Dit is een container waarin je normale Java objecten (Pojo`s : Plain Old Java Objects) kunt aanmaken. In deze container lijm je de grote bouwstenen van je systeem in elkaar en configureer je ze met de juiste argumenten. Deze container is dus een soortement van vergaarbak waarin al je objecten worden aangemaakt, eventueel krijgen ze de mogelijkheid om nog wat initialisatie functionaliteit uit te voeren. Maar ze krijgen ook de mogelijkheid om zaken af te sluiten op het moment dat de container af gaat sluiten. Op alle objecten in die container wordt dus een stuk live cycle management uitgeoefend en krijg je op een hele nette manier de kans om goed op te starten en af te sluiten. Verder is het nu ook eenvoudig om aan referenties naar andere objecten te komen (ook altijd een groot gemis in J2EE). Geen zielig gestuntel met JNDI meer.. maar gewoon zoals het altijd al had gemoeten.

Maar wat is dan nu dat IOC gedeelte? In principe is het vrij eenvoudig. Je geeft een object niet meer de verantwoordelijk voor het aanmaken van de componenten die hij gebruikt, in plaats hiervan injecteer je de componententen (de afhankelijkheden) erin (dependency injection). 2 Van de meest gebruikte mogelijkheden om te injecteren zijn : de constructor (mijn favoriet.. ik kan de garantie geven dat mijn objecten ten alle tijden valid zijn), of via een setter.

Een voorbeeld:

Ik heb een object dat documenten moet analyzeren:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class DocumentAnalyzer{
    private Executor _executor;
    
    public ExecutorService(Executor executor){
        _executor = executor;
    }
    
    public void analyze(final Document document){
        Runnable r = new Runnable(){
            public void run(){
                ..doe dikke analyse dingen met het document
            }
        };
        
        _executor.submit(r);
    }
}


De Executor is een onderdeel van Java 5.0 en beschrijft de interface waaraan een dienst moet voldoen die runnable taken kan uitvoeren. Stel dat ik wil dat een threadpool wordt gebruikt om die taken naast elkaar uit te voeren, dan zou ik dan in Spring op de volgende manier kunnen oplossen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<bean id="documentAnalyzerExecutorService"
    class="edu.emory.mathcs.util.concurrent.ThreadPoolExecutor"
    destroy-method="shutdown">

    <!-- core pool size -->
    <constructor-arg index="0">
            <value>5</value>
    </constructor-arg>

    <!-- max pool size -->
    <constructor-arg index="1">
        <value>10</value>
    </constructor-arg>

    <!-- die-time -->
    <constructor-arg index="2">
        <value>5000</value>
    </constructor-arg>

    <constructor-arg index="3">
        <ref bean="edu.emory.mathcs.util.concurrent.TimeUnit.MILLISECONDS"/>
    </constructor-arg>

    <constructor-arg index="4">
        <bean class="edu.emory.mathcs.util.concurrent.LinkedBlockingQueue"/>
    </constructor-arg>
</bean>

<bean id="documentAnalyzer"
        class="DocumentAnalyzer">
    
    <constructor-arg>
        <ref bean="documentAnalyzerExecutorService"/>
    </constructor-arg>      
</bean>


Zoals je kunt zien is de documentAnalyzer nu voorzien van een ThreadPoolExecutor waarmee ik dus een pool van threads tot mijn beschikking heb die deze taken uitvoert. Maar voor het testen is het werken met een threadpool erg onplezierig omdat ik dus een extra thread in mijn systeem heb. Gelukkig kan ik aan de DocumentAnalyzer ook een volledig andere implementatie van die Executor meegeven, namelijk de DirectExecutor:

code:
1
2
3
4
5
 class DirectExecutor implements Executor {
     public void execute(Runnable r) {
         r.run();
     }
 }


Zoals je kunt zien leg je de verantwoordelijkheid hoe objecten op worden gebouwd niet meer volledig bij het object neer. Het object beschrijft wat hij nodig heeft en zo lang jij je aan dat contract houdt, komt (meestal) alles goed. Het object is een soortement van framework achtig component waarin specifieke functionaliteit geinjecteerd kan worden.

Dit zorgt ervoor dat je objecten veel beter herbruikbaar zijn en ook veel beter te testen zijn. Mij is opgevallen dat ik nu met 2 petten op naar mijn code kijk, namelijk dat als component schrijver en component configurator.

Tot zover dit voorbeeld, maar dit is echt nog maar een puntje van de ijsberg. Spring kan echter nog veel meer: transacties toevoegen, security toevoegen, remoting toevoegen, jmx toevoegen etc etc (de lijst houd niet op). Spring is een heel framework van tools waardoor je (in mijn ogen) op een veel betere manier gaat werken. Niet langer van die lompe J2EE oplossingen, maar lichte en elegante oplossingen. Spring is zoals J2EE al lang had moeten zijn.

Dus wie is er al bezig met Spring? Wie is geinteresseerd? Wie heeft heeft het de kreet wel eens horen vallen? Wie is er al verliefd? :)

[ Voor 79% gewijzigd door Alarmnummer op 23-03-2005 21:41 ]


  • |orion
  • Registratie: Juli 2002
  • Laatst online: 16-04 15:16
Ik! Nadat ik nogal vaak jouw 'gezeur' over Spring had gelezen ben ik me er een week of twee geleden eens in gaan verdiepen. Ik heb toen het gratis hoofdstuk van het boek 'Spring Live' van sourcebeat gelezen en daarna het boek maar meteen aangeschaft. Nu, twee weken later, ben ik een heel stuk verder in de basis van Spring en het gebruik van AppFuse (een tool die een start maakt voor een J2EE project met als keuze voor de basis spring, struts, hibernate, etc., wat je maar wil).

Al met al wil ik Spring eigenlijk al niet meer kwijt. Mijn code is (unit)testbaar geworden (al snap ik JMock nog niet) en ik heb het idee dat ik zo sneller code schrijf omdat ik niet elke keer Tomcat hoef te herstarten om iets te proberen en dat dan 20x moet herhalen omdat het niet werkt. Nu kan ik lekker unittesten en de problemen in een fractie van de tijd oplossen, EN garanderen dat de code in de toekomst blijft werken.

Woei! :D

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Er is een stroom aan veranderingen op til ten opzichte van J2EE development. De nadruk ligt op de manier van aanpak van het ontwikkelen van deze applicaties, Spring en Hibernate zijn twee van deze grotere new wave frameworks.

Spring beschikt over een rijke support voor enterprise-level services en wordt daarmee gepositioneerd als een waardig alternatief op EJB. EJB is, in vergelijking met Spring, een reeds lang gevestigde waarde binnen het J2EE domein. Daarom moet de keuze, om de ene boven de andere te verkiezen, ook goed overwogen worden.

EJB is de standaard en zijn specificatie werd vastgelegd door de JCP. Aangezien EJB een standaard is, beschikt deze ook over enkele voordelen tov Spring zoals een brede steun in de industrie: Er zijn veel grote bedrijven die de EJB technologie ondersteunen; zoals Sun, IBM, Oracle, ... Dit brengt met zich mee dat EJB nog lang ondersteund en verder ontwikkeld zal worden. Dit is voor vele bedrijven ook een heel belangrijk punt.

In 90% van de J2EE applicaties zijn de services die door EJB verstrekt worden, de inleveringen die dit gebruik met zich meebrengt, de keuze voor EJB niet waard.
Spring voorziet ook in bijna alle services die door de EJB container aangeleverd worden en laat tegelijkertijd toe om aan de hand van een veel beter design, hetzelfde doel te bereiken.

Maar er zijn vast en zeker ook gebieden waar EJBs misschien toch nuttig kunnen zijn; bv de bankaire sector of indien er intens gebruik gemaakt zal worden van een distributed environment.

Al bij al ben ik eigenlijk ook verliefd op Spring O+
Maar merk wel dat er nog veel bedrijven zijn die hier nog niet voor openstaan. Op dit moment ben ik dan ook aan een groot project aan het werken (Met EJBs.. zowel session als entity). Unit testing is hier geen issue, aangezien we met onze omgeving wel kunnen testen (Rational Software Architect 6.0, waar een geintegreerde WebSphere applicatieserver in draait).

Mocht ik zelf de keuze hebben, zou ik dan ook dadelijk voor Spring gaan (tenzij mss voor een project waar de modules distributed (geclustered) zullen worden.)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Het klinkt allemaal erg interesant. Ik krijg een dezer dagen wat boeken binnen over J2EE waarin ook over spring geschreven staat zoals je vertelde. Ik denk dat het ook wel een goede zet is om Pro Spring aan te schaffen en Expert one-on-one J2EE.

Klopt het dat depency injection eigenlijk soort van opbouwen van objecten is aan de hand van het strategy pattern (of een afgeleide daarvan)? Het lijkt me wel erg fijn idd om je class tijdelijk anders te laten fungeren puur voor test cases.

Noushka's Magnificent Dream | Unity


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Michali schreef op donderdag 24 maart 2005 @ 08:28:
Het klinkt allemaal erg interesant. Ik krijg een dezer dagen wat boeken binnen over J2EE waarin ook over spring geschreven staat zoals je vertelde. Ik denk dat het ook wel een goede zet is om Pro Spring aan te schaffen en Expert one-on-one J2EE.

Klopt het dat depency injection eigenlijk soort van opbouwen van objecten is aan de hand van het strategy pattern (of een afgeleide daarvan)?
Yep.. daar kun je het wel mee vergelijken Je kunt je componenten zien als een soortement van framework achtige objecten waarin je 'detail' functionaliteit kan injecteren om het object af te maken.
Het lijkt me wel erg fijn idd om je class tijdelijk anders te laten fungeren puur voor test cases.
Dat is idd handig.. Maar het meest handige is dat je objecten minder afhankelijkheden hebben naar concrete implementaties en daarom beter te hergebruiken zijn. Het zijn echt kleine mini frameworkjes geworden..

Er is ook kritiek op dependency injecten aangezien het anti-oo zou zijn. Ipv dat je de inhoud van een object verborgen houd van de buitenwereld, expose je dit allemaal. Persoonlijk vind ik dit een minder sterk argument aangezien alleen bij de constructie en niet bij de verdere werking van het object dit zichtbaar is. Dus als een object al andere dependencies zou krijgen, zijn de gevolgen ervan relatief klein (het komt erop neer dat ik iets aan de Spring config moet sleutelen).

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 04-05 13:54
ik ben ook wat bezig met het experimenteren met Spring, nu een 2tal kleine projectjes gedaan, maar ik heb nog niet een volledig overzicht van de mogelijkheden en opties van spring.

zover gebruik ik spring enkel ipv het gebruik van singelton classes...

maar ik heb nog wat ontwerp problemen..

als mvc kant gebruik ik Struts, dan heb ik een BO laag met BO opbjecten, deze laat ik injecteren via setters door Spring in men actions, in die BO objecten laat ik Spring dan men DAO objecten setten (Hibernate implementaties) en zo kan ik naar de datalaag


probleem wat ik nu heb is hoe exceptions opvangen, DAO heeft unchecked exceptions DataAccessExceptions, deze van ik toch op en wrap ik nu in een zelf gedefinieerde BusinessExcpeption en geef die zo door naar de action klasse, zodat ik naar de gebruik toe een foutmelding kan geven met wat fout is gegaaan...

misschien offtopic, maar hoe regelen jullie de exceptions handling in zo'n applicatie? Is hier iets te doen via spring (wat ik betwijfel)

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Cuball schreef op donderdag 24 maart 2005 @ 09:12:
probleem wat ik nu heb is hoe exceptions opvangen, DAO heeft unchecked exceptions DataAccessExceptions, deze van ik toch op en wrap ik nu in een zelf gedefinieerde BusinessExcpeption en geef die zo door naar de action klasse, zodat ik naar de gebruik toe een foutmelding kan geven met wat fout is gegaaan...
Ik ben er zelf ook alles behalve happy mee. Bij Spring geloven ze niet in checked exceptions (check de mission statements).
misschien offtopic, maar hoe regelen jullie de exceptions handling in zo'n applicatie? Is hier iets te doen via spring (wat ik betwijfel)
Ik probeer exceptions als ze door een layer gaan te vertalen naar exceptions die horen bij die layer. Ik denk dat maar erg weinig mensen beseffen dat als je dit niet doet, en dus in de gui layer database exceptions voor de kiezen gaat krijgen, dat je layer afhankelijkheid hebt gecreerd die in strijd zijn met de layer aanpak (geen afhankelijkheden afgezien van de layer onder je).

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 05-05 11:52

Eelke Spaak

- Vlad -

Momenteel ontwikkel ik een applicatie met SessionBeans voor de business-logiclaag en Hibernate voor de entity laag. Vooralsnog is er geen web laag aanwezig (de client is een Swing app). Dit alles draait in een JBoss AS, die dingen als security echt bijzonder fijn voor zijn rekening neemt (met weinig rompslomp, i.t.t. de EJB standard security). Ik heb weinig moeite om aan referenties naar objecten te komen, want wat is er zo slecht aan JNDI?

Mijn applicatie moet zich bezighouden met transacties die simpele DB-queries behelzen, maar ook communicatie naar externe webservices. Kan Spring dit type transacties ook voor zijn rekening nemen?

Ik heb vaak (vooral van Alarmnummer :) ) gehoord over Spring, maar ik betwijfel nog steeds wat de concrete voordelen ervan zijn. Zolang ik weinig problemen heb met hoe het nu werkt (en toegegeven, EntityBeans 2 hebben voor mij wel volledig afgedaan) zie ik geen reden om over te stappen.

Maar ik ben inmiddels wel serieus nieuwsgierig :) .

TheStreme - Share anything with anyone


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Eelke Spaak schreef op donderdag 24 maart 2005 @ 09:32:
Momenteel ontwikkel ik een applicatie met SessionBeans voor de business-logiclaag en Hibernate voor de entity laag. Vooralsnog is er geen web laag aanwezig (de client is een Swing app). Dit alles draait in een JBoss AS, die dingen als security echt bijzonder fijn voor zijn rekening neemt (met weinig rompslomp, i.t.t. de EJB standard security). Ik heb weinig moeite om aan referenties naar objecten te komen, want wat is er zo slecht aan JNDI?

Mijn applicatie moet zich bezighouden met transacties die simpele DB-queries behelzen, maar ook communicatie naar externe webservices. Kan Spring dit type transacties ook voor zijn rekening nemen?

Ik heb vaak (vooral van Alarmnummer :) ) gehoord over Spring, maar ik betwijfel nog steeds wat de concrete voordelen ervan zijn. Zolang ik weinig problemen heb met hoe het nu werkt (en toegegeven, EntityBeans 2 hebben voor mij wel volledig afgedaan) zie ik geen reden om over te stappen.

Maar ik ben inmiddels wel serieus nieuwsgierig :) .
Wat je nu ook hebt is dat straks met EJB 3 de Entity beans vervangen worden door POJO's dus daar is vervolgens weer overlap met Spring. Het overige verhaal van Alarmnummer is voor zover ik lees ook terug te vinden in EJB's (Security, Transaction Management, Remoting, JMX). De JNDI problemen zijn straks ook zo goed als verdwenen. Dus al met al worden de voordelen van Spring straks minder groot (of mischien helemaal verdwenen).

Een ander voordeel van J2EE 1.4 is dat Webservices bijvoorbeeld op dezelfde manier behandeld worden als Datasources, het kost geen ruk moeite om webservices te gebruiken in JBoss 4.x (of andere applicatie servers), daarnaast zijn EJB Stateless session beans ook door een paar simpele aanpassingen te publiceren naar de buitenwereld als WebServices dus dat is ook weer een voordeel. Verder heb je tegenwoordig Timer Beans, dit zijn session beans met een extra geimplementeerde interface (2 methods) voor bijvoorbeeld Jobs die om de zoveel tijd moeten gebeuren.

Al met al, zie ik de voordelen van Spring door de tijd heen wel kleiner worden, zeker als zometeen EJB 3 ter wereld wordt gebracht.

De problemen die er vroeger waren met de deployment descriptors zijn straks trouwens ook opgelost want die worden niet meer ondersteund, dit omdat alles via Annotation gaat lopen. (ook voor de POJO's) Hierdoor is de hoeveelheid informatie die je als meta data moest registreren erg gereduceerd.

Daarnaast speelt ervaring ook een stuk mee, ik heb nu 3 jaar ervaring met EJB's en deze hoeveelheid ervaring heb ik niet zomaar opgebouwd met Spring.

Mischien dat ik ooit nog eens naar Spring ga kijken maar nu heb ik mijn aandacht gevestigd op Java Server Faces (om dit te begrijpen moet je een boek hebben, er kan enorm veel, veel meer dan met Struts en dit gebruik ik op het moment).

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
ronaldmathies schreef op donderdag 24 maart 2005 @ 09:47:
Wat je nu ook hebt is dat straks met EJB 3 de Entity beans vervangen worden door POJO's dus daar is vervolgens weer overlap met Spring. Het overige verhaal van Alarmnummer is voor zover ik lees ook terug te vinden in EJB's (Security, Transaction Management, Remoting, JMX). De JNDI problemen zijn straks ook zo goed als verdwenen. Dus al met al worden de voordelen van Spring straks minder groot (of mischien helemaal verdwenen).
Minder groot... Maar vergeet niet dat Spring meer is dan alleen wat beanenhancement. De container van Spring is een erg krachtig geheel waarin de live cycle management van beans kan plaatsvinden. Bv een bepaalde methode van een bean via quartz registeren zodat hij bv scheduled wordt aangeroepen is peanuts. Beans enhancen zodat ze ge-jmx-ified worden.. peanuts.. Remoting (rmi, burlap, webwervices etc) peanuts.
Een ander voordeel van J2EE 1.4 is dat Webservices bijvoorbeeld op dezelfde manier behandeld worden als Datasources, het kost geen ruk moeite om webservices te gebruiken in JBoss 4.x (of andere applicatie servers), daarnaast zijn EJB Stateless session beans ook door een paar simpele aanpassingen te publiceren naar de buitenwereld als WebServices dus dat is ook weer een voordeel.
Hmm dat is met Axis ook peanuts. Op de interface de Java to WSDL loslaten en op basis van de WSDL alle stubs laten genereren. Dit kan trouwens zometeen via Spring zonder dat je zelf nog iets met webservices hoeft te doen.

Spring geeft je erg veel vrijheid om beans te enhancen en om samen te werken met je omgeving. Met Spring heb ik het gevoel dat ik een tool heb waarmee we samen tot een oplossing kunnen komen. Niet een tool die tegen me werkt. En als ik nieuwe functionaliteit in Spring wil introduceren, dan kan ik dat super eenvoudig (ik heb al een aantal bean enhancements gemaakt omdat ik iets nodig was dat nog niet in Spring was gerealiseerd: MethodInvokingSequenceJobDetailFactoryBean
Verder heb je tegenwoordig Timer Beans, dit zijn session beans met een extra geimplementeerde interface (2 methods) voor bijvoorbeeld Jobs die om de zoveel tijd moeten gebeuren.
Kan met Spring via Quartz ;) Verder vind ik het probleem aan dit soort oplossingen dat je ineens weer een interface moet implementeren.
Al met al, zie ik de voordelen van Spring door de tijd heen wel kleiner worden, zeker als zometeen EJB 3 ter wereld wordt gebracht.
Hmm tja.. Ik weet jouw mening over EJB ;) Dus ik snap je verzet. Met Spring heb ik nu iets dat goed werkt en hoe lang moeten we nog wachten dat EJB 3.0 wordt geaccepteerd in productie omgevingen. Ik denk dat we snel een jaar verder zijn.
Mischien dat ik ooit nog eens naar Spring ga kijken maar nu heb ik mijn aandacht gevestigd op Java Server Faces (om dit te begrijpen moet je een boek hebben, er kan enorm veel, veel meer dan met Struts en dit gebruik ik op het moment).
JSF kan je ook uitstekend gebruiken icm Spring.

Ik denk dat Spring wel bij je manier van denken moet passen. Ik vind het goed passen bij mijn manier van denken. Het is licht, kan veel en geeft me de vrijheid om te doen wat ik wil en verder geeft het me ook de mogelijkheid om uit te breiden. Het probeert me niet een bepaalde kant op te drukken.

[ Voor 11% gewijzigd door Alarmnummer op 24-03-2005 10:22 ]


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Alarmnummer schreef op donderdag 24 maart 2005 @ 10:01:
[...]

Minder groot... Maar vergeet niet dat Spring meer is dan alleen wat beanenhancement. De container van Spring is een erg krachtig geheel waarin de live cycle management van beans kan plaatsvinden. Bv een bepaalde methode van een bean via quartz registeren zodat hij bv scheduled wordt aangeroepen is peanuts. Beans enhancen zodat ze ge-jmx-ified worden.. peanuts.. Remoting (rmi, burlap, webwervices etc) peanuts.
Hier zie ik dus een beetje pat stelling, want het is met EJB ook niet moeilijk (zeker met EJB3)
Hmm dat is met Axis ook peanuts. Op de interface de Java to WSDL loslaten en op basis van de WSDL alle stubs laten genereren. Dit kan trouwens zometeen via Spring zonder dat je zelf nog iets met webservices hoeft te doen.
Dat is juist wat ik bedoelde met EJB3, ik doe het op het moment ook met Axis maar dat is nog omslagtig vergeleken met EJB3.
Spring geeft je erg veel vrijheid om beans te enhancen en om samen te werken met je omgeving. Met Spring heb ik het gevoel dat ik een tool heb waarmee we samen tot een oplossing kunnen komen. Niet een tool die tegen me werkt. En als ik nieuwe functionaliteit in Spring wil introduceren, dan kan ik dat super eenvoudig (ik heb al een aantal bean enhancements gemaakt omdat ik iets nodig was dat nog niet in Spring was gerealiseerd: MethodInvokingSequenceJobDetailFactoryBean
Het probleem is inderdaad dat mijn kennis van Spring alleen hetgeen is wat ik op dit forum voorbij zie komen, je entousiasme kan ik wel plaatsen :) ditzelfde heb ik met Struts en nu zeker met JSF/JSTL.
Kan met Spring via Quartz ;) Verder vind ik het probleem aan dit soort oplossingen dat je ineens weer een interface moet implementeren.
Ik heb liever een Interface die ik moet implementeren (waar je overigens niets hoeft te doen behalve jezelf registreren in de container) dan een complete klasse extenden en dat ik zelf een stukje management moet regelen.

Het voordeel van de Timer Bean is is dat deze crash ongevoelig is, als je de container laat crashen (door het process zeg maar grof te killen via Task Manager) en je start hem opnieuw op dan gaat hij vrolijk weer verder.
Hmm tja.. Ik weet jouw mening over EJB ;) Dus ik snap je verzet. Met Spring heb ik nu iets dat goed werkt en hoe lang moeten we nog wachten dat EJB 3.0 wordt geaccepteerd in productie omgevingen. Ik denk dat we snel een jaar verder zijn.
Het klinkt soms als verzet maar waar we beide tegen aan lopen is dat ik niet veel van Spring weet maar wel veel van EJB's, en jij denk ik veel van Spring weet maar minder van EJB's (in de zin van ervaring en zeker in de zin van de komende features).

EJB3 is trouwens al te krijgen als component voor JBoss 4, echter dit is nog wel in testfase maar grofweg 90% van de specificatie zit er al in.
JSF kan je ook uitstekend gebruiken icm Spring.

Ik denk dat Spring wel bij je manier van denken moet passen. Ik vind het goed passen bij mijn manier van denken. Het is licht, kan veel en geeft me de vrijheid om te doen wat ik wil en verder geeft het me ook de mogelijkheid om uit te breiden. Het probeert me niet een bepaalde kant op te drukken.
[/quote]

Dat ze goed samen kunnen werken geloof ik graag, dit omdat men met dit soort frameworks altijd willen zorgen dat het overal toepasbaar is. Dat het vrijer is dan EJB's is ook niet zo raar, ze hebben van zichzelf geen specificatie te volgen die industriebreed is opgezet. Ditzelfde zag je ook bij Struts, de flexibiliteit is enorm hoog. Echter wat je bijvoorbeeld bij Struts nu ziet gebeuren is dat het een beetje begint dood te bloeden omdat er een industrie brede ondersteuning ontstaat. Nu hebben ze wel allerlei ideën over de toekomst maar Struts Classic houd in iedergeval op. (terug te vinden op de Wiki pagina's van Struts, Struts-Faces e.d.)

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:00
Alarmnummer schreef op woensdag 23 maart 2005 @ 21:17:
Dus wie is er al bezig met Spring? Wie is geinteresseerd? Wie heeft heeft het de kreet wel eens horen vallen? Wie is er al verliefd? :)
Ik ben er atm niet mee bezig, maar ken het woord Spring van al jouw verhalen hier in /14 :)

Het afgelopen halfjaar ben ik wel in aanraking gekomen met J2EE, Servlets, Beans en JSP's door een vak voor mijn opleiding. Wij zijn er toen niet echt diep op in gegaan, maar we zijn inmiddels in staat om met behulp van servlets enkele beans en een handvol jsp (plus xml + xslt) pagina's een dynamische website te genereren.

Heb er enig inzicht gekregen hoe het J2EE verhaal in elkaar steekt, maar wat hier boven mij allemaal verteld wordt gaat mijn pet nog te boven. Maar ben wel geintereseerd geraakt voor het ontwikkelen/ontwerpen van software voor het J2EE platform (en Java in het algemeen).

Desalniettemin is hiet iets om te onthouden voor het geval als ik wel met met Java ga werken in die toekomst.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
ronaldmathies schreef op donderdag 24 maart 2005 @ 10:34:
[...]
Ik heb liever een Interface die ik moet implementeren (waar je overigens niets hoeft te doen behalve jezelf registreren in de container) dan een complete klasse extenden en dat ik zelf een stukje management moet regelen.
Ik hoef niet eens een klasse te extenden. Ik zeg gewoon in de app context: ik wil van die bean, die methode met die argumenten scheduled aanroepen. De bean zelf heeft dus geen enkele verplichting naar een interface of abstract class. Ik kan daarom ieder component in mijn framework gebruiken zonder het nog eens aan allerlei verplichtingen te laten voldoen.

Ik heb bv een Indexer class die ik scheduled wil aanroepen. In spring is dat geen probleem. Voor EJB zou ik of een subclass moeten maken die die interface implementeerd. Of ik zou een wrapper om Indexer moeten maken die deze interface implementeerd. Het komt erop neer dat je veel 'ruis' klasses in je systeem krijgt. Ruisklasses zijn bad aangezien ze niet een echt toegevoegde waarde hebben maar je wel zit met de verplichtingen van hun bestaan.
Het voordeel van de Timer Bean is is dat deze crash ongevoelig is, als je de container laat crashen (door het process zeg maar grof te killen via Task Manager) en je start hem opnieuw op dan gaat hij vrolijk weer verder.
Dat kan met Quartz ook.

Sun die gaat dus weer allerlei api`s nabouwen waarvoor er al goeie alternatieven zijn. Dit is een van de mission statements van Spring. Hierin zijn Sun en Spring elkaars tegenpolen.
EJB3 is trouwens al te krijgen als component voor JBoss 4, echter dit is nog wel in testfase maar grofweg 90% van de specificatie zit er al in.
Ik geloof dat Oracle ook al een EJB 3.0 testversie heeft. Maarja.. ik kan nu dingen gebruiken die jij pas over een jaar (misschien) in een productie omgeving in kunt zetten.
Dat ze goed samen kunnen werken geloof ik graag, dit omdat men met dit soort frameworks altijd willen zorgen dat het overal toepasbaar is. Dat het vrijer is dan EJB's is ook niet zo raar, ze hebben van zichzelf geen specificatie te volgen die industriebreed is opgezet. Ditzelfde zag je ook bij Struts, de flexibiliteit is enorm hoog. Echter wat je bijvoorbeeld bij Struts nu ziet gebeuren is dat het een beetje begint dood te bloeden omdat er een industrie brede ondersteuning ontstaat. Nu hebben ze wel allerlei ideën over de toekomst maar Struts Classic houd in iedergeval op. (terug te vinden op de Wiki pagina's van Struts, Struts-Faces e.d.)
Het dood gaan van Struts is denk ik eerder te weiten aan het slechte ontwerp en het te veel aan restricties ;) Trouwens.. een van de hoofddudes van Struts is ook een belangrijke speler bij het JSF project.

[ Voor 5% gewijzigd door Alarmnummer op 24-03-2005 11:20 ]


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Ik heb vanavond de tutorial uit het boek Spring Live gevolgd. Na enkele foutjes, onduidelijkheden, (probeersels van mezelf) ben ik erin geslaagd om dit allemaal lekker draaiend te krijgen. Ik stond versteld van de uiteindelijke hoeveelheid code! _/-\o_ (Niet van de hoeveelheid tijd, had het zelf eigenlijk sneller in elkaar kunnen draaien, maar dat is leertraject...)

Ben daarna begonnen met een simpel (nou ja, simpel, het datamodel wat ik nu heb bestaat uit 14 klassen, maar het is nog brainstorm) ledenprogrammaatje. We gaan ons eens even lekker verdiepen in de Struts/Swing, Spring, Hibernate combinatie. (Struts en Spring omdat ik ook een stand-alone versie wil gaan maken)

In ieder geval zijn het een veelbelovende technieken!

(Even een off-topic vraagje:

Stel, ik heb een vereniging, en die heeft leden, maar ik wil niet alleen de huidige leden opslaan, maar ook kunnen zien, wie er lid is geweest en van wanneer tot wanneer. Hoe zou je dit in je model verwerken. Een vinkje 'isLid' kan niet. 'BeginDatum' en 'EindDatum' kan ook niet. (Mensen kunnen er een tijdje tussenuit stappen) Wat is wel een goede oplossing? Zit al een tijdje m'n hoofd hierover te breken...
)

Damn, ik zet zonder er bij na te denken het sluit-haakje van het haakje wat ik 10 minuten geleden geopend had, hoe bedoel je, ik zie/tik te veel code...

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • |orion
  • Registratie: Juli 2002
  • Laatst online: 16-04 15:16
Nick_S schreef op donderdag 24 maart 2005 @ 23:22:(Even een off-topic vraagje:

Stel, ik heb een vereniging, en die heeft leden, maar ik wil niet alleen de huidige leden opslaan, maar ook kunnen zien, wie er lid is geweest en van wanneer tot wanneer. Hoe zou je dit in je model verwerken. Een vinkje 'isLid' kan niet. 'BeginDatum' en 'EindDatum' kan ook niet. (Mensen kunnen er een tijdje tussenuit stappen) Wat is wel een goede oplossing? Zit al een tijdje m'n hoofd hierover te breken...
)
Misschien kan je het opdelen in twee tabellen. In de ene tabel sla je de gegevens van een lid op (ook al is deze misschien helemaal geen lid) en in een andere sla je de lidmaatschappen (dus een lidId, startDatum en een eventuele eindDatum; die laatste zou ik nullable maken). Op die manier kan je een lid meerdere malen lid laten zijn zonder elke keer zijn gegevens opnieuw in te moeten voeren of bijvoorbeeld de vorige begindatum te overschrijven.

[ Voor 39% gewijzigd door |orion op 25-03-2005 00:41 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
|orion schreef op vrijdag 25 maart 2005 @ 00:41:
[...]

Misschien kan je het opdelen in twee tabellen. In de ene tabel sla je de gegevens van een lid op (ook al is deze misschien helemaal geen lid) en in een andere sla je de lidmaatschappen (dus een lidId, startDatum en een eventuele eindDatum; die laatste zou ik nullable maken). Op die manier kan je een lid meerdere malen lid laten zijn zonder elke keer zijn gegevens opnieuw in te moeten voeren of bijvoorbeeld de vorige begindatum te overschrijven.
Precies.. dezelfde techniek die je toepast voor een artikel met veranderende prijsen en waarbij je al die prijzen wilt onthouden.
Nick_S schreef op donderdag 24 maart 2005 @ 23:22:
Ben daarna begonnen met een simpel (nou ja, simpel, het datamodel wat ik nu heb bestaat uit 14 klassen, maar het is nog brainstorm) ledenprogrammaatje. We gaan ons eens even lekker verdiepen in de Struts/Swing, Spring, Hibernate combinatie. (Struts en Spring omdat ik ook een stand-alone versie wil gaan maken)
Pas trouwens wel op met struts dat je je niet laat verleiden om de business logic in de actions te schrijven. Hibernate gebruiken wij zelf ook en ik ben er erg over te spreken.. Het kan precies wat ik wil, geen gekke foutmeldingen of om de haverklap allerlei fouten. Hibernate = erg fijne tool en Spring heeft uitstekende support voor hibernate. In Spring geef ik declaratief mijn transacties op mijn services en vervolgens zorgt Spring ervoor dat er sessions klaar staan als een transactie begint (en die pikt de Dao wel weer op) en verder sluit Spring de sessions als het goed gaat (met een commit) of als er een fout optreed met een rollback. Transacties zijn nog nooit zo makkelijk geweest.

Trouwens.. dit is ook (in mijn ogen) een van de meest belangrijke features van sessionbeans.

[ Voor 52% gewijzigd door Alarmnummer op 25-03-2005 07:55 ]


Verwijderd

Alarmnummer schreef op vrijdag 25 maart 2005 @ 07:49:

Pas trouwens wel op met struts dat je je niet laat verleiden om de business logic in de actions te schrijven. In Spring geef ik declaratief mijn transacties op mijn services en vervolgens zorgt Spring ervoor dat er sessions klaar staan als een transactie begint (en die pikt de Dao wel weer op) en verder sluit Spring de sessions als het goed gaat (met een commit) of als er een fout optreed met een rollback. Transacties zijn nog nooit zo makkelijk geweest.

Trouwens.. dit is ook (in mijn ogen) een van de meest belangrijke features van sessionbeans.
(ik heb je post een beetje vernaggeld om te grouperen wat ik belangrijk vond)

Sessionbeans zorgen er ook voor dat er geen business logic in je actions zit, en je er dus ook makkelijk een andere client voor kan schrijven (SWING, ...).

Ergens heb ik het idee dat als je een Spring-Struts (of gelijk wel MVC framework) en later een SWING client ernaast wil schrijven je een hele hoop werk hebt om de business logic toch nog op een centrale server te kunnen bewaren, of is het zo eenvoudig om er een webservice layer(waar .NET misschien ook wat mee kan) over te gooien? Of is dit niet zo simpel?
Hibernate gebruiken wij zelf ook en ik ben er erg over te spreken.. Het kan precies wat ik wil, geen gekke foutmeldingen of om de haverklap allerlei fouten. Hibernate = erg fijne tool en Spring heeft uitstekende support voor hibernate.
Hibernate, ik heb er enkel nog maar een héél klein testje mee gedaan (idd, het schaamtegevoel groeit :)).
Wat ik me al de hele hibernate tijd afvraag is hoe je die dingen saved. Gebruikt iedereen echt een session.save(persistentObject) voor elke object (ok, relaties niet inbegrepen, doet hij dacht'k automagisch)?
Ik weet dat bij CMP (gebruiken we hier op het werk) elke 'set' call op het einde van de transactie mooi in de database zit zonder te weten waar wat gewijzigd is en of dat wel mooi gesaved is. Wij hebben een (relatief, maar toch) grote applicatie met EJBs en behandelen in 1 call soms zoveel data uit zoveel verschillende tabellen in 1x dat die session.save() me echt onhandig lijkt.
Mis ik ergens een truucje of is dit echt verplicht? Lijkt me niet zo handig voor data intensieve applicaties zoals de onze.

(OK, tamelijk offtopic maar hopelijk stoort het niet te zeer)


Spring lijkt me zowiezo niet geschikt voor zeer grote applicaties waar je dependencies hebt met teveel 'business logic managers' die je misschien wel, misschien niet nodig hebt. Daar lijkt het me echt beter zelf je objecten te creeren en aan te roepen...
Maar kleinere (niet te letterlijk nemen, dat kan nog steeds een respectabele omvang zijn) applicaties zullen zeer zeker gebaat zijn met een Spring configuratie. Ik ben persoonlijk niet voor het hele setter gebeuren van zulke belangrijke dependencies, maar de testbaarheid verzacht de pijn wel. Maar het hele framework gedeelte van helper classes voor JDBC/Hibernate/JDO datalagen, transactions, ... is héél goed opgezet en kan ook apart gebruikt worden, iets waar ik wel voor te vinden ben.
(gewoon oppervlakkig bekeken, ik heb me al sterk in Spring ingelezen, maar er nog niets echt mee gedaan).

  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:08

Standeman

Prutser 1e klasse

Qua het Spring framework heb ik de bel wel horen luiden... ik ben alleen nog druk op zoek naar de klepel.

Na het lezen van jullie reacties (en enthousiasme) wordt het voor mij eens tijd dat ik mezelf er wat meer in ga verdiepen, want het klinkt wel goed :)

Alleen jammer dat ik de komende weekenden nog in mijn tuin bezig ben :/

The ships hung in the sky in much the same way that bricks don’t.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op vrijdag 25 maart 2005 @ 08:54:
[...]


(ik heb je post een beetje vernaggeld om te grouperen wat ik belangrijk vond)

Sessionbeans zorgen er ook voor dat er geen business logic in je actions zit, en je er dus ook makkelijk een andere client voor kan schrijven (SWING, ...).

Ergens heb ik het idee dat als je een Spring-Struts (of gelijk wel MVC framework) en later een SWING client ernaast wil schrijven je een hele hoop werk hebt om de business logic toch nog op een centrale server te kunnen bewaren, of is het zo eenvoudig om er een webservice layer(waar .NET misschien ook wat mee kan) over te gooien? Of is dit niet zo simpel?
Als jij een gui onafhankelijke business layer schrijft (zoals het hoort) dan is het geen probleem. Alleen is het met struts nogal verleidelijk om de business logic in de action te plaatsen -> lastig om later nog een andere gui erop aan te sluiten.

Dus als je het op zet zoals het hoort is het geen probleem.
Wat ik me al de hele hibernate tijd afvraag is hoe je die dingen saved. Gebruikt iedereen echt een session.save(persistentObject) voor elke object (ok, relaties niet inbegrepen, doet hij dacht'k automagisch)?
Ik gebruik een persoonDao.saveOrUpdate :) Hoe dat onder grond is gerealiseerd maakt mij niet uit. In mijn businesslogic zul je niets van hibernate terug zien.
Ik weet dat bij CMP (gebruiken we hier op het werk) elke 'set' call op het einde van de transactie mooi in de database zit zonder te weten waar wat gewijzigd is en of dat wel mooi gesaved is. Wij hebben een (relatief, maar toch) grote applicatie met EJBs en behandelen in 1 call soms zoveel data uit zoveel verschillende tabellen in 1x dat die session.save() me echt onhandig lijkt.
Mis ik ergens een truucje of is dit echt verplicht? Lijkt me niet zo handig voor data intensieve applicaties zoals de onze.
Ik begrijp niet wat je bedoelt. Hibernate gaat alle objecten saven die hij vanuit de session kan bereiken . Zowel direct bereikbaar als indirect bereikbaar (relaties). Voor het indirect bereikbare gedeelte hangt het ook af van je configuratie.. cascasde save ed.
Spring lijkt me zowiezo niet geschikt voor zeer grote applicaties waar je dependencies hebt met teveel 'business logic managers' die je misschien wel, misschien niet nodig hebt. Daar lijkt het me echt beter zelf je objecten te creeren en aan te roepen...
Volgens mij blink Spring dan juist uit door het centraal te beheren ipv zelf objecten aan te maken. Leg eens uit waarom Spring daarom niet geschikt zijn? Ik kan alleen maar argumenten voor bedenken.. en geen enkele tegen. Argumenten voor: beheersbaarheid, testbaarheid, security, transacties etc. En verder kun je de app context ook opdelen over meerdere bestanden waarin je bepaalde beans publiekelijk kunt maken en anderen weer niet..
Maar kleinere (niet te letterlijk nemen, dat kan nog steeds een respectabele omvang zijn) applicaties zullen zeer zeker gebaat zijn met een Spring configuratie. Ik ben persoonlijk niet voor het hele setter gebeuren van zulke belangrijke dependencies, maar de testbaarheid verzacht de pijn wel.
Ik ben ronduit tegen de setters.. alles gaat bij mij via de constructor:) Maar dat kan ook perfect met Spring.

[ Voor 3% gewijzigd door Alarmnummer op 25-03-2005 13:48 ]


Verwijderd

Alarmnummer schreef op vrijdag 25 maart 2005 @ 13:46:
[...]

Als jij een gui onafhankelijke business layer schrijft (zoals het hoort) dan is het geen probleem. Alleen is het met struts nogal verleidelijk om de business logic in de action te plaatsen -> lastig om later nog een andere gui erop aan te sluiten.

Dus als je het op zet zoals het hoort is het geen probleem.


[...]
Hmm, ik dacht aan de manier waarop AppFuse opgezet is, daar worden heel wat container services gebruikt, en ik zou het niet echt leuk vinden de database van zowat overal aan te spreken omdat de 'managers' bij de SWING applicatie zitten incl de DAO's en dergelijke. Daarom dat ik het delegeren van BL > een session layer een must vindt.
Ik gebruik een persoonDao.saveOrUpdate :) Hoe dat onder grond is gerealiseerd maakt mij niet uit. In mijn businesslogic zul je niets van hibernate terug zien.
tja, tuurlijk via de DAO, maar het feit is dat je geen enkel objectje mag vergeten....misschien is dat inderdaad geen enkel probleem, maar zoals gezegd heb ik er geen ervaring mee en viel het me toch op als een groot verschil met CMPs.
[...]

Ik begrijp niet wat je bedoelt. Hibernate gaat alle objecten saven die hij vanuit de session kan bereiken . Zowel direct bereikbaar als indirect bereikbaar (relaties). Voor het indirect bereikbare gedeelte hangt het ook af van je configuratie.. cascasde save ed.


[...]

Volgens mij blink Spring dan juist uit door het centraal te beheren ipv zelf objecten aan te maken. Leg eens uit waarom Spring daarom niet geschikt zijn? Ik kan alleen maar argumenten voor bedenken.. en geen enkele tegen. Argumenten voor: beheersbaarheid, testbaarheid, security, transacties etc. En verder kun je de app context ook opdelen over meerdere bestanden waarin je bepaalde beans publiekelijk kunt maken en anderen weer niet..


[...]

Ik ben ronduit tegen de setters.. alles gaat bij mij via de constructor:) Maar dat kan ook perfect met Spring.
In ons project (iets human resource gerelateerd) werken we vooral rond jobs en orgunits, daar hangt zowat ALLES aan... en als een job gewijzigd wordt komt daar zoveel bij kijken dat je al die logic niet in 1 manager met 7 (ik zeg maar wat) DAO's wil gooien.
Je delegeert dan naar andere managers (maar vanuit die ene manager, je wil zelf ook dergelijke logica niet in je actions) die enkele controles voor je uitvoeren en eventueel aanpassingen maken. Ik zou Spring nooit die managers allemaal laten instantieren en setten aangezien ik die niet altijd nodig heb en ze best wel zwaar kunnen zijn om instantieren.
Met spring worden al die managers dan geinstantieerd met al hun dependencies terwijl je die misschien (simpel voorbeeld: if (oldDate.before(newDate) dezemanager.doiets(); else doeNietsMetDieManager(dezemanager); //zulke toestanden die je vanuit Spring absoluut niet kan weten) niet nodig hebt. Wij hebben een heel administratieve applicatie die heel data intensief is, en in veel functies zoveel data aanpast dat ik het toch liever neit met een Hibernate Spring combinatie zou doen.
Appfuse, fora, dat CV programma en dergelijke rechtlijnige projectjes waar elke call relatief weinig doet zie ik echt wel snel gaan met Spring, maar iets dat met z'n tentakels in je hele codebase zit beheer ik liever niet met Spring, misschien schrik voor het onbekende, maar ik ben niet de enige met dat idee hier...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
In ons project (iets human resource gerelateerd) werken we vooral rond jobs en orgunits, daar hangt zowat ALLES aan... en als een job gewijzigd wordt komt daar zoveel bij kijken dat je al die logic niet in 1 manager met 7 (ik zeg maar wat) DAO's wil gooien.
Je delegeert dan naar andere managers (maar vanuit die ene manager, je wil zelf ook dergelijke logica niet in je actions) die enkele controles voor je uitvoeren en eventueel aanpassingen maken. Ik zou Spring nooit die managers allemaal laten instantieren en setten aangezien ik die niet altijd nodig heb en ze best wel zwaar kunnen zijn om instantieren.
Met spring worden al die managers dan geinstantieerd met al hun dependencies terwijl je die misschien (simpel voorbeeld: if (oldDate.before(newDate) dezemanager.doiets(); else doeNietsMetDieManager(dezemanager); //zulke toestanden die je vanuit Spring absoluut niet kan weten) niet nodig hebt.
Jouw probleem is dat je bang bent dat 'dure' objecten iedere keer worden aangemaakt? Je bent geloof ik bang dat er te veel ongebruikte dependencies opgezocht moeten worden? Als je je beans gewoon singleton maakt (zoals stateless services vanuit nature kunnen zijn) dan betaal je eenmalig die kosten.

Verder is het erg belangrijk om je te realiseren dat Spring je niet een bepaald model door je strot probeert te drukken. Bedenk hoe je het wil en maak het in Spring en niet: bedenk wat er mogelijk is in een container en dan maar hopen dat ik er iets acceptabels uit kan halen.
Wij hebben een heel administratieve applicatie die heel data intensief is, en in veel functies zoveel data aanpast dat ik het toch liever neit met een Hibernate Spring combinatie zou doen.
Appfuse, fora, dat CV programma en dergelijke rechtlijnige projectjes waar elke call relatief weinig doet zie ik echt wel snel gaan met Spring, maar iets dat met z'n tentakels in je hele codebase zit beheer ik liever niet met Spring, misschien schrik voor het onbekende, maar ik ben niet de enige met dat idee hier...
Wat bedoel je met 'z`n tentakels in je hele codebase zit?' Het fijne aan Spring is dat je in je java code geen enkele keer 'import org.springframework.... * zult zien staan. Jouw code is niet dependant on Spring. Spring lijmt het in elkaar en voorziet ze (als je dat opgeeft) van extra functionaliteit.

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 20:28
Is Spring ook geschikt om mee te beginnen in webbased Java-programmeren?
Ik ben nu voor studie veel met Java (clientside) bezig, en het bevalt me een stuk beter dan PHP. Ik kijk daarom steeds meer Java/JSP/Servlets/etc. maar ik weet nog niet echt waar te beginnen.

[ Voor 3% gewijzigd door Eärendil op 26-03-2005 18:01 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
En zijn er intussen nog meer mensen verliefd geworden op Spring?

Op dit moment zijn er een aantal zaken waar ik veel mee bezig ben:
-Lucene (ben ik een platform voor aan het ontwikkelen)
-Hibernate (voor de or-mapping): ben me de laatste tijd aan het verdiepen in complexere or-mappings en session/transactie problematiek
-Spring
-En de nieuwe concurrency library van jdk 5.0.

DIt geheel werkt gewoon echt prachtig met elkaar. Ik begrijp het.. ik kan ontwerpen en tunen wat ik maar wil. Heeft het niet genoeg functionaliteit? Kan je 9 van de 10 keer wel een nieuw custom component aanmaken die de functionaliteit wel heeft. Het werkt gewoon echt prachtig met elkaar. Mijn tools zijn een ondersteuning van mijn creativiteit en zijn geen dwangbuis om binnen te werken. EJB = een verkrachtig van de geest en de mensen die het bedacht hebben zouden daar eigelijk op afgerekend moeten worden ;)

[ Voor 8% gewijzigd door Alarmnummer op 08-05-2005 10:27 ]


  • Antediluvian
  • Registratie: Maart 2002
  • Laatst online: 04-05 10:30
Alarmnummer schreef op zondag 08 mei 2005 @ 10:07:
Het werkt gewoon echt prachtig met elkaar. Mijn tools zijn een ondersteuning van mijn creativiteit en zijn geen dwangbuis om binnen te werken.
Ik ben ook al enige maanden bezig met Spring en ik geef je hier volledig gelijk in.


Waar ik vooral van verstelt sta is dat eenvoudige academische technieken/voorbeelden (met simpele POJO's) die normaal nooit in op enterprise niveau worden toegepast, nu wel bruikbaar zijn dankzij Spring.
Alles met elkaar te laten werken is zo eenvoudig (dankzij Dependency Injection) dat de complexiteit van het geheel veel minder wordt. Mocht je niet goed wat er nu zo speciaal is aan Spring, dan raad ik je zeker aan even het volgende artikel te lezen. Het geeft goed aan wat het algemene idee is achter de spring core.

Waar ik ook van onder de indruk ben is het Acegi Security System for Spring. Het duurt even voordat je door hebt hoe het allemaal in elkaar zit maar eenmaal je de structuur begrijpt is security “a piece of cake”. Je kan al je applicatie code vrij houden van security code wat de complexiteit terug naar beneden haalt en je toelaat je te concentreren op die dingen die op die plek echt belangrijk zijn (bv business logic).
Acegi heeft dan standaard wel een eenvoudig security model maar dit uitbreiden naar je eigen wensen is echter zo makkelijk dat ik geen J2EE project meer zou willen beginnen zonder hiervan gebruik te maken.

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Antediluvian schreef op zondag 08 mei 2005 @ 13:15:
Waar ik ook van onder de indruk ben is het Acegi Security System for Spring. Het duurt even voordat je door hebt hoe het allemaal in elkaar zit maar eenmaal je de structuur begrijpt is security “a piece of cake”. Je kan al je applicatie code vrij houden van security code wat de complexiteit terug naar beneden haalt en je toelaat je te concentreren op die dingen die op die plek echt belangrijk zijn (bv business logic).
Acegi heeft dan standaard wel een eenvoudig security model maar dit uitbreiden naar je eigen wensen is echter zo makkelijk dat ik geen J2EE project meer zou willen beginnen zonder hiervan gebruik te maken.
Acegi lijkt me op het eerste zicht wel een krachtig security mechanisme, al heb ik me er zelf nog niet echt in kunnen verdiepen.. Ik denk dat ik er ook wel intensief gebruik van ga maken in mijn toekomstige projecten. Het enige wat me nog een beetje stoort is dat het nog steeds geen 1.0 status bereikt heeft; maar mist Acegi dan nog zoveel features of waar ligt dit precies aan?

Zijn er overigens goede 'best practices' te vinden met Acegi en/of is dit framework goed (voldoende) gedocumenteerd?
Pagina: 1