Proč je JavaEE nepopulární?

M&M Lentilky

Proč je JavaEE nepopulární?
« kdy: 11. 05. 2013, 10:21:23 »
Dlouho jsem vytvářel dynamické weby pomocí PHPčka, ale jakožto programátora jehož primárním jazykem je Java mě to táhlo k JavaEE. Z všechn stran jsem slyšel jak je to těžkopádný moloch, složitý atd atd, ale PHPko mi prostě nesedne. Proti gustu žádný dišputát ale vždycky jsem ho vnímal spíš jako špatný vtip než programovací jazyk. Tak mi to nedalo a ponořil jsem se do JavaEE. Zajímalo by mě, proč má takovou pověst, vždyť když potřebuju primitivní web s pár stránkama a dynamickýma fcema (patička, automat. generované menu apod.) tak si vystačím i s JSP a nikdo mě přece nenutí používat JSF, EJB a podobně, rozjedu to na nějakém light servlet containeru (a teď neřeším hostingy, ano, tam má PHPčko těžce navrh). No a pokud se mi projekt rozroste, nabízí mi Java EE plné možnosti jazyka Java a další jako ORM, JPA, EJB, REST a podobné. Nechci vyvolat flame ale tuhle otázku si dlouho pokládám, když v diskusích typu "Co místo PHPčka" vidím "zkus Python, RoR" ale ne Javu.


Strašidlo

Re:Proč je JavaEE nepopulární?
« Odpověď #1 kdy: 11. 05. 2013, 10:31:11 »
Java EE je populární, a to docela dost, jenom ne v naší kotlině. Ale já ji mám rád. <3

tomas

Re:Proč je JavaEE nepopulární?
« Odpověď #2 kdy: 11. 05. 2013, 10:35:58 »
java neni cool :)
a protoze ji vsichni pouzivaji denne v praci a tak si radi odbehnou jinam a blogiskuji o tech odbezich jinam

mafo

Re:Proč je JavaEE nepopulární?
« Odpověď #3 kdy: 11. 05. 2013, 10:37:37 »
celkove s JEE je problem prave s tema aplikacnimi servery. Ty maji obvykle ruzne implementace ruznych API a knihoven (do nejvetsi dokonalosti to dotahl IBM WAS, ktery ma v oblibe ssebou tahat zabugovane stare verze knihoven pro xml a jeste je prapodivne patchovat.). Mas problemy s classloaderem...
Dalsi problem s JEE je jeho pomaly neflexibilni vyvoj. Spring se vyviji dost rychle a reaguje na trh. Specifikace  JEE je jedna vec, ale za jak dlouho od vydani specifikace JEE 6 byla implementovana do JBOS (letos?) do WAS (tam snad jeste neni), ...?
Dale donedavna byly vsechny aplikace silene molochy (jboss ale to trhnul asi). A AS musis vzdy v JEE pouzit. Pracovat bez bean nema smysl, a psat to pouze nad JSP a servletama neznamena psat v JEE to je SSE

M&M Lentilky

Re:Proč je JavaEE nepopulární?
« Odpověď #4 kdy: 11. 05. 2013, 10:47:36 »
celkove s JEE je problem prave s tema aplikacnimi servery. Ty maji obvykle ruzne implementace ruznych API a knihoven (do nejvetsi dokonalosti to dotahl IBM WAS, ktery ma v oblibe ssebou tahat zabugovane stare verze knihoven pro xml a jeste je prapodivne patchovat.). Mas problemy s classloaderem...
Dalsi problem s JEE je jeho pomaly neflexibilni vyvoj. Spring se vyviji dost rychle a reaguje na trh. Specifikace  JEE je jedna vec, ale za jak dlouho od vydani specifikace JEE 6 byla implementovana do JBOS (letos?) do WAS (tam snad jeste neni), ...?
Dale donedavna byly vsechny aplikace silene molochy (jboss ale to trhnul asi). A AS musis vzdy v JEE pouzit. Pracovat bez bean nema smysl, a psat to pouze nad JSP a servletama neznamena psat v JEE to je SSE

A GlassFish jako referenční implementace JavaEE se nepoužívá v produkčním nasazení?


andy

Re:Proč je JavaEE nepopulární?
« Odpověď #5 kdy: 11. 05. 2013, 10:55:51 »
Najskor kvoli tomu, ze ked niekto povie java ee tak si kazdy predstavi hrube knihy, rozozrane aplikacne servery a dlhe restarty :). Ano, donedavna to tak bolo, ale vdaka hot patchingu a podobnym technologiam su tie restarty minimalne a ked som skusal jboss7 tak som chvilu myslel, ze sa to este nenastartovalo :).

nn

Re:Proč je JavaEE nepopulární?
« Odpověď #6 kdy: 11. 05. 2013, 11:11:56 »
Java EE je bomba :) Osobne utekam velmi daleko od vsetkych phpiek a pythonov a asi aj od ruby :)

Ano, u nas to nie je take popularne, pretoze tomu chyba uzivatelska zakladna. Kde tu je nejake forum o Java EE v cesko-slovenskom priestore? V PHP uz kodi kazdy BFU, Java EE ma dlhsiu krivku ucenia, nie je trivialne sklbit vsetko dokopy, EJB 3.1, CDI (aka Weld), Seam napr. REST, JAX-RS, WSDL, naucit sa adminovat EAP / JBoss, Maven (bez toho sa uz velmi nepohnes), JSF / JSP, JPA, JMS .... su tam toho tony, takze sam vidis co vsetko musis na seba nabalit a vediet, aby si sa v tom vyznal a nieco zmysluplne v tom spravil.

Vyhoda je ta, ze ked to raz nakodis (poriadne), poriadne to zdokumentujes a nesprasis navrh, tak ti je odmenou velmi dobra stabilita, odladenost, skalovatelnost a brutalna podpora na urovni middleware-u, mas to cele super duper otestovane ... proste mas za sebou velmi siroku podporu nastrojov a celu tu infrastrukturu za tym ... A to je to co pridava za ten nazov Javy to "EE" :) Ale krivka ucenia nie je taka strma ako inde a treba pri tom vydrzat ...

Ja verim ze cas Java EE este pride, EE6 vyzrera dost dobre, ked si k tomu este zoberies taky Forge alebo Arquillian tak to sa ti vyvija brutalne pohodlne :) Osobne nechapem odpor verejnosti k Java EE, hlavne ze vsetci phpkari vravia ze boze javisti, to su strasni lepici, sa pozrite na seba :D kormidlujete k jednemu frameworku k druhemu, podla nalady asi, sa to naucte raz a poriadne a nemusite riesit nic

andy

Re:Proč je JavaEE nepopulární?
« Odpověď #7 kdy: 11. 05. 2013, 11:14:50 »
Neblazni, ved nas prestanu dobre platit!

Franta <xkucf03/>

Re:Proč je JavaEE nepopulární?
« Odpověď #8 kdy: 11. 05. 2013, 11:18:29 »
Zajímalo by mě, proč má takovou pověst...
V první řadě to není pravda. Java je hodně populární a rozšířená – jen se nesmíš ptát průměrného PHP bastlíře. Zeptej se ve firmě, kde se vytváří informační systémy (ne jen lepí weby).

A teď proč je Java(EE) nepopulární v určitých (okrajových) skupinách lidí:
 - Je složitější než PHP, kde ti stačí jeden soubor. Musíš ji kompilovat. Jsou to banality, ale hodně lidí se nedostane dál než za „Hello world“ příklad, tudíž je to odradí.
 - Na webu není tolik rozšířená, pořád je trochu náročnější/dražší sehnat webhosting s Javou než s PHP, klasický LAMP.
 - Uživatel si kdysi zkusil spustit nějakou desktopovou aplikaci v Javě a startovalo to déle než aplikace v C/C++ → uživatel tedy nabyl dojmu, že Java je obecně pomalá.
 - Někteří lidé mají pocit, že Java patří do velkých korporací, připadá jim příliš enterprise.
 - Můžeš narazit i na fundovanější názor založený na zkušenosti a ne jen dojmologii: uživatel kdysi dávno pracoval se starými EJB a přišlo mu to hrozné. Ano, tehdy to bylo strašné, ale EJB 3.x jsou naopak velmi povedené. Dotyčný uživatel poněkud zaspal (tehdy byl jeho názor relevantní).

Podle tvého příspěvku to vypadá, že Javu znáš a líbí se ti. Tak neřeš, co o ní blábolí internetoví diskutéři a prostě pracuj na nějakém svém projektu, vybral sis dobrý nástroj, tak tě nemusí zajímat nějaké plky ostatních. Nebo se nech někde zaměstnat, dostaneš slušně zaplaceno a přijdeš do styku s důležitými systémy a zajímavými technologiemi.

nn

Re:Proč je JavaEE nepopulární?
« Odpověď #9 kdy: 11. 05. 2013, 11:22:36 »
- Na webu není tolik rozšířená, pořád je trochu náročnější/dražší sehnat webhosting s Javou než s PHP, klasický LAMP.

Len doplnim Frantu (za inak velmi kvalitny a objektivny nazor)

https://www.openshift.com/

http://en.wikipedia.org/wiki/OpenShift

Otazka hostingu (na nejaky cas a na prekonanie barier) vyriesena

Franta <xkucf03/>

Re:Proč je JavaEE nepopulární?
« Odpověď #10 kdy: 11. 05. 2013, 11:22:58 »
Specifikace  JEE je jedna vec, ale za jak dlouho od vydani specifikace JEE 6 byla implementovana do JBOS (letos?) do WAS (tam snad jeste neni), ...?

GlassFish to měl mnohem dřív.

psat to pouze nad JSP a servletama neznamena psat v JEE to je SSE
Servlety a JSP jsou součástí EE. (jiná věc je, že aby nějaký server byl „EE aplikačním serverem“, nestačí mu podporovat JSP a servlety)

mafo

Re:Proč je JavaEE nepopulární?
« Odpověď #11 kdy: 11. 05. 2013, 11:37:58 »
A GlassFish jako referenční implementace JavaEE se nepoužívá v produkčním nasazení?

Nevim o zadnem zakaznikovi, ktery by mel v testu nebo produkci glassfish. Obvykle JBoss (je ~zadarmo a super), IBM WAS a budoucnost v EE vidim v Oracle WebLogic (dost se vyviji ekosystem okolo). Nevidim proc by oracle mel podporovat GlassFish, ze ktereho mu nejde ani koruna. Imho GF bude postupne utlumen a pouze jako reference a prijde neco jako WebLogic Expresss.

Jinek java je neoblibena, protoze potrebuje pametove resource ikdyz tam neni zadny klinet (architektura application scoped bean a podobne), narozdil od PHP, ktere kdyz nebezi, tak je "vyply". Kazde reseni ma sve vyhody a nevyhody. Hlavni nevyhodou pristupu javy je o hodne drazsi hosting jendoduchych aplikaci s malym pristupem uzivatelu. Coz je domena vetsiny zacatecniku v php...

Dalsi nevyhoda javy vidim v tom, ze programatora se trochu apson chovat a tak nejde tak rychle bastlit a prototypovat jako v ROO, pripadne PHP templatovachich frameworcich.

Osobne bych ti doporucil misto JEE zacit springem, ten se imho dnes pouziva casteji. Ja s nim pracuji denne, ale divam se co pribylo v JEE a jak to prevzal spring a vetsinou to uz mel pred rokem implementovane. Jedine co imho JEE bude prekonavat spring je Cloud, clustering SAS, na kterem melo byt v 6 docela zapracovano ze strany programatora (ale mozna to nakonec nebude tak horke, nevenuji se tomu tolik a mozna to spring ma implementovane, pripadne implementuje nebo ma substitut..). :)

M&M Lentilky

Re:Proč je JavaEE nepopulární?
« Odpověď #12 kdy: 11. 05. 2013, 12:13:29 »
- Na webu není tolik rozšířená, pořád je trochu náročnější/dražší sehnat webhosting s Javou než s PHP, klasický LAMP.

Len doplnim Frantu (za inak velmi kvalitny a objektivny nazor)

https://www.openshift.com/

http://en.wikipedia.org/wiki/OpenShift

Otazka hostingu (na nejaky cas a na prekonanie barier) vyriesena

A máte osobní zkušenosti s Openshiftem? Už jsem na něj koukal, zajímalo by mě jak je to např. s odezvou a rychlostí stránek.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Proč je JavaEE nepopulární?
« Odpověď #13 kdy: 11. 05. 2013, 12:35:17 »
Java je neoblíbená především u lidí, kteří "programují pro zábavu". Ten jazyk je sice čistý, ale programy v něm jsou pohádka na dobrou noc. V C# a v PHP např. můžu předat anonymní funkci jako argument do jiné funkce, v Javě musím vytvořit novou třídu (naštěstí stačí anonymní), která implementuje rozhraní IRunnable a tu teprve předat.

V C# můžu vzít kolekci a transformovat ji na jinou (kolekce.Select(...)), stejně tak v PHP (array_map(...)). V Javě to udělat nelze - je třeba vytvořit instanci nové kolekce, foreachem projít původní a přidávat prvek po prvku do té nové.

Místo použití .Net třídy ObservableCollection, která všem objektům, které o to mají zájem, dá pomocí eventů echo o tom, že se do ní přidaly / z ní odebraly prvky, musím v Javě řešit přes ObserverPattern. Srovnej třídu přímo v .Netu http://msdn.microsoft.com/cs-cz/library/ms668604.aspx a v ApacheCommons (která sice není součástí Javy, ale mnoho lidí ji bere jako "základní knihovnu", asi jako boost u C++) http://commons.apache.org/dormant/events/apidocs/org/apache/commons/events/observable/ObservableCollection.html

 Atd... je toho hodně.

Takto se dá pokračovat. Zatímco jazyk PHP je prasárna a nic víc než zpropadená prasárna, rychlost vývoje je vyšší a u drobných aplikací máš menší paměťové nároky a kratší (= čitelnější a přehlednější) kód. Upřímně (přestože jsem full-time C# vývojář), PHP jsme na jeden projekt použili taky: Win8 Store aplikačka si potřebuje zjistit, odkud si stáhnout data a někam uložit adresu notifikačního kanálu. Nemá smysl kvůli tomu rozbíhat JavaEE server nebo platit za další Azure server, když pro těch pár tisíc uživatelů stačí malá databáze a něco, co může komunikovat přes REST "protokol". A strčit "ven" další linuxový server s PHP a deploynout projekt je téměř zadarmo. O Javu se musíš starat přece jenom víc. Výhody Javy se projeví až na větších projektech, které ale většina nadšenců nedělá, neb by jim to zabralo víkendy na několik let dopředu. A právě tito lidé (často to ani nejsou profi programátoři; mnozí z nich ani nepracují v IT a nemají IT vzdělání) jsou nejvíce vidět na diskusních fórech. Pro ně je ideální právě PHP a proto to vypadá, že JavaEE je neoblíbená a PHP velmi oblíbené, ačkoliv u profesionálů je pravdou přesný opak.

Pokud Ty se nechceš JavouEE živit, tak spíš než na JSP, které jsou hodně low-level (podobně jako čisté PHP bez frameworku), se můžeš zkusit zaměřit na nějaký high-level framework: mně na školní projekt kdysi celkem sedlo tohle: http://wicket.apache.org/ . Případně na Grails (http://www.grails.org/), což je framework pro Groovy. Groovy je druhý ze dvou oficiálních jazyků pro Java Virtual Machine (první je samozřejmě Java), jedná se o dynamický jazyk, ve kterém se mně osobně pracuje podobně (ne)příjemně jako v C#. Java je opravdu velmi rozvláčná a existuje jedna pravda, že programový kód je to místo, kde jsou chyby. Proto ho piš co nejméně, k čemuž Groovy pomůže. Případně můžeš zkusit jazyk jménem Clojure (taky běží na JVM) - získáš ještě přehlednější a kratší kód (byť si na ten jazyk musíš nejprve zvyknout, přeci jen je to odnož LISP-1) a webové framewroky jsou pro něj taky.

A přestože si na to mnoho vývojářů-nadšenců nepotrpí, tak pro Javu/Groovy lze sehnat lepší vývojová prostředí. NetBeans je dobrý základ, Eclipse má pluginy pro všechno (i když pohodlnost použití pro vývojáře pokulhává) a hlavně IntelliJ IDEA, za kterou se sice platí, ale je úplně the best. Nic takového pro PHP neseženeš a usnadní to hodně práce.

nn

Re:Proč je JavaEE nepopulární?
« Odpověď #14 kdy: 11. 05. 2013, 12:45:10 »
A máte osobní zkušenosti s Openshiftem? Už jsem na něj koukal, zajímalo by mě jak je to např. s odezvou a rychlostí stránek.

Nahral som tam len nejake primitivne stranky aby som si vyskusal cely ten princip ale myslim ze s odozvou nebude vobec problem. Sice to nemam nicim podlozene, ale mam pocit, ze existuju stranky ktorych primarna platforma je openshift a bezia bez problemov.

Samozrejme kriticke aplikacie tam (asi a zatial) nepatria.

Openshift je vyborny presne na ten ucel na aky potrebujete, rychly deploy bez problemov v cloude (nie len) java aplikacii.

Raz som tam skusal jednu aplikaciu vo frameworku Errai (http://www.jboss.org/errai) a ta aplikacia bola v openshifte. Islo o to, ze som mal v ruke telefon s androidom a ked som fyzicky naklanal obrazovku s www strankou na mobile (hore dole / doprava dolava) tak sa zaroven menil sklon nejakeho widgetu na www stranke na pocitaci predomnou na tej istej www stranke presne podla toho ako som hybal s mobilom. Viete si predstavit, ake "narocne" to je na response time aby mal z toho uzivatel nejaky "real time" zazitok.

Fungovalo to plynulo.