Portál AbcLinuxu, 2. května 2025 05:54
Predem reknu ze nechci resit "pomalost" ani nastartovat novy flamewar. Budu mluvit o necem jinem.
Asi si pamatujete zaplavu nejruznejsich linuxovych liveCD. Java je na tom podobne s knihovnami a nejruznejsimi frameworky.
Jako typicky priklad uvedu ORM mapping. Kolem roku 2000 vznikly dve knihovny Hibernate a iBatis. Obe resi stejny problem jinym zpusobem a vzajmne se perfektne doplnuji. Protoze byly uspesne, vznikla cela rada podobnych nastroju. Pritom 80% procent z nich neprinasi nic noveho a jen se snazi resit nove problemy.
Jako dalsi priklad mohou poslouzit logovaci knihovny. Log4J je nejsireji pouzivana knihovna pro logovani. Presto jen v ramci Apache Foundation existuji 3 dalsi knihovny pro stejny ucel.
Proc mluvim o rakovine? Protoze rakovine bunky se nekontrolovane mnozi a odcerpavaji silu organizmu. Stejne tak lze hodnotit obrovske mnozstvi knihoven pro Javu.
Nejhorsi na tom je ze tato rakovina zasahla i Sun. Priklad "just another library" je treba implementace Loggeru v JRE. Priklady "just another standart" jsou JDO a JPA kopirujici Hibernate nebo Java Module System kopirujici OSGI.
Pokud clovek zacina novy projekt, musi se doslova prokousat desitkama knihoven, ktere mohou resit jeho problemy. Obcas to prinese kompletne novy pristup, ale vetsinou je to jen stary problem otoceny o par stupnu.
Reseni tohohle neexistuje, je to dan za rozsirenost javy. Osobne doporucuji kazdy pul rok vyzkouset nove knihovny, jestli neusetri nejaky cas. Take je velmi rozumne nezacinat s betou/prototypem. Knihovna by mela byt na trhu alespon rok ve stabilni verzi, protoze za tu dobu se odladi problemy a vznikne rozumna komunita.
Obcas tohle prochazeni knihoven prinese prekvapivy objev. Pro me to napriklad bylo: DB4J (objektova db) a Piccollo (2D framework)
Tiskni
Sdílej:
Jako dalsi priklad mohou poslouzit logovaci knihovny. Log4J je nejsireji pouzivana knihovna pro logovani. Presto jen v ramci Apache Foundation existuji 3 dalsi knihovny pro stejny ucel.A to sami autoři log4j napsali další dvě knihovny pro logování – slf4j (obdoba jakarta-commons-logging) a logback (nástupce log4j). Nutno ovšem říci, že tady to má smysl, protože ty knihovny jsou opravdu lepší, než jejich předchůdci (navíc implementují nejrůznější API, takže je možné v části projektu používat slf4j, které ale nakonec loguje skrze jcl nebo log4j, nebo je naopak možné používat slf4j, ktzeré knihovnám používající jcl poskytne jeho API). Jinak je to bujení Javy podobné, jako bujení linuxových distribucí, nebo i jako bujení demokracie, kapitalizmu, nebo dokonce života – všude se spousta věcí „vymýšlí“ znova a znova, liší se jenom v drobnostech. Jenomže jak se zdá, pro vývoj je to ta nejlepší cesta. Náš pan vševědoucí prezident do počítačů nedělá, aby nám prozradil, který systém bude nejlepší, takže holt nezbývá, než těch cestiček prošlapávat spoustu a čekat, která se ukáže jako perspektivní, a která zanikne.
To stejne plati o EJB3 vs. Spring...Ještě štěstí, že v tomhle konkrétním případě to tak úplně neplatí
Od té doby, co jsem se trochu rozkoukal a usadil se na "standardu" Hibernate + Struts to dělám tak, že prostě nic nehledám a nezkouším, dokud se při řešení problémů hledáním na google nesetkávám v odpovědích na fórech s kladným ohlasem na nějaký framework tak často, že se nakonec rozhodnu jej vyzkoušet - tak jsem se třeba dostal k Spring, iBATIS a FreeMarker, nebo mi ho dlouhodobě cpe kamarád/spolupracovník, který produkuje rychle a dobře - tak jsem se dostal například k Wicketu. Jen málokdy se stane, že mě něco štve tak moc, abych se začal sám pídit po něčem lepším - ale například JUnit je fakt napytel.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.