Af en toe zie ik hier een topic gewoon om meningen te vragen. Dit is er zo eentje.
Ik ben al (nog maar) een paar maand met Java bezig voor een project dat Content Management voor een website doet. We hebben zowel serverside als clientside spul. Nu dat het er bijna op zit heb ik toch een paar bedenkingen waar ik jullie mening es wil over horen.
1) Traag.
Eerlijk gezegd dacht ik dat dit geen probleem meer zou zijn, maar toch:
a) opstart snelheid.
Is het echt niet mogelijk om een java app snel te doen opstarten? Onze app die heus niet zoveel doet start op in 25-30 seconden, terwijl Visual Studio 6 dit op 5 seconden doet. (en Word in 2
. (met webstart nog trager)
b) processing speed van de meeste Open-Source libs.
We hebben ondervonden dat erg veel van open-source erg traag, buggy
'incompatible(xerces, xalan)'! is (specifiek in ons geval: Xindice, OJB, (Swing), XSP, Tomcat). Vaak moesten we erond werken ipv ermee. Soms dacht ik dat C veel crossplatform was dan Java...
c) UI - Swing. Dat het niet snel was dat wist ik al , maar hoe traag blijft me toch
echt verbazen: via AWT zal Java vast wel bitmaps kunnen 'blitten' en dus toch 1 of andere vorm van optimalistaties kunnen toepassen. de 'windowing' techniek (if any) is degoutant traag vind ik - het verschil met een native app is toch vaak 10x tot 20x keer zo traag. Ik heb zelf in (C++) maar wel met pure memcpy (dus GEEN blitting) een 32Bit windowing library (dus pure software versie) die 5x 10x keer sneller is. OOk het 'event' system is erg 'tricky' en niet echt responsive. En waarom duurt het altijd 5 - 10 na een minimize voor te hertekennen? Ik vind het erg jammer dat Sun met zoiets durft afkomen, ze hadden beter de resources in SWT gestoken. (Over swing kan ik nog uren doorzagen, en toch had ik al de beste boeken voor me (subscription op O'Reilly))
2) Memory
Het allerergste aan Java is het memory 'beheer' - we gebruiken voor ons spul Tomcat, Xindice, Cocoon en nog wat. Dit zijn allemaal server apps - maar alle stuk voor stuk vreten ze het geheugen op totdat ie op het punt 'of no return zit': ie elke volgende request gaat eerst gepaard met een hoop GC (soms enkele seconden, soms tientallen) en dan is het beter om te restarten. Tomcat is nog het beste van allemaal, Xindice is enorm 'slecht': we gebruiken nu 2MB aan xml data en toch na een uurtje van heel milde requests (1x minuut) zit het memory gebruik aan 160MB. onze eigen client app die ook bijna niets bijhoud (tis een live app dus kunnen we niet teveel cachen) slokt na een tijdje 60MB op.
Voor mij is het duidelijk : java (met Sun VM) is gewoon niet goed genoeg voor professioneel gebruik (wat enkele maanden door Sun zelf ook al werd gehint): en ja ik weet best dat J2EE heel vaak word gebruikt dus ik zal maar aannemen dat die een agressiever VM gebruiken, of ik iets heel grondig verkeerd doe. Of heb je echt een PIV+ met 1GB aan geheugen?
Maar graag daarover jullie mening, want ik begon heel hoopvol met dit project omdat Java toch erg aantrekkelijk leek - maar de hele toestand heeft me toch een slechte smaak van Java nagelaten. (net als de eerste keer 8 jaar geleden). (ik heb wel specifiek niet over applet of J2ME)
Ik ben al (nog maar) een paar maand met Java bezig voor een project dat Content Management voor een website doet. We hebben zowel serverside als clientside spul. Nu dat het er bijna op zit heb ik toch een paar bedenkingen waar ik jullie mening es wil over horen.
1) Traag.
Eerlijk gezegd dacht ik dat dit geen probleem meer zou zijn, maar toch:
a) opstart snelheid.
Is het echt niet mogelijk om een java app snel te doen opstarten? Onze app die heus niet zoveel doet start op in 25-30 seconden, terwijl Visual Studio 6 dit op 5 seconden doet. (en Word in 2
b) processing speed van de meeste Open-Source libs.
We hebben ondervonden dat erg veel van open-source erg traag, buggy
'incompatible(xerces, xalan)'! is (specifiek in ons geval: Xindice, OJB, (Swing), XSP, Tomcat). Vaak moesten we erond werken ipv ermee. Soms dacht ik dat C veel crossplatform was dan Java...
c) UI - Swing. Dat het niet snel was dat wist ik al , maar hoe traag blijft me toch
echt verbazen: via AWT zal Java vast wel bitmaps kunnen 'blitten' en dus toch 1 of andere vorm van optimalistaties kunnen toepassen. de 'windowing' techniek (if any) is degoutant traag vind ik - het verschil met een native app is toch vaak 10x tot 20x keer zo traag. Ik heb zelf in (C++) maar wel met pure memcpy (dus GEEN blitting) een 32Bit windowing library (dus pure software versie) die 5x 10x keer sneller is. OOk het 'event' system is erg 'tricky' en niet echt responsive. En waarom duurt het altijd 5 - 10 na een minimize voor te hertekennen? Ik vind het erg jammer dat Sun met zoiets durft afkomen, ze hadden beter de resources in SWT gestoken. (Over swing kan ik nog uren doorzagen, en toch had ik al de beste boeken voor me (subscription op O'Reilly))
2) Memory
Het allerergste aan Java is het memory 'beheer' - we gebruiken voor ons spul Tomcat, Xindice, Cocoon en nog wat. Dit zijn allemaal server apps - maar alle stuk voor stuk vreten ze het geheugen op totdat ie op het punt 'of no return zit': ie elke volgende request gaat eerst gepaard met een hoop GC (soms enkele seconden, soms tientallen) en dan is het beter om te restarten. Tomcat is nog het beste van allemaal, Xindice is enorm 'slecht': we gebruiken nu 2MB aan xml data en toch na een uurtje van heel milde requests (1x minuut) zit het memory gebruik aan 160MB. onze eigen client app die ook bijna niets bijhoud (tis een live app dus kunnen we niet teveel cachen) slokt na een tijdje 60MB op.
Voor mij is het duidelijk : java (met Sun VM) is gewoon niet goed genoeg voor professioneel gebruik (wat enkele maanden door Sun zelf ook al werd gehint): en ja ik weet best dat J2EE heel vaak word gebruikt dus ik zal maar aannemen dat die een agressiever VM gebruiken, of ik iets heel grondig verkeerd doe. Of heb je echt een PIV+ met 1GB aan geheugen?
Maar graag daarover jullie mening, want ik begon heel hoopvol met dit project omdat Java toch erg aantrekkelijk leek - maar de hele toestand heeft me toch een slechte smaak van Java nagelaten. (net als de eerste keer 8 jaar geleden). (ik heb wel specifiek niet over applet of J2ME)