Vyvoj J2EE aplikaci

nobody

Vyvoj J2EE aplikaci
« kdy: 17. 05. 2015, 13:56:08 »
Jako vyvojar v Django a Node.js jsem se dostal k vyvoji J2EE aplikaci. Po mirnem rozcarovani z portaloveho systemu Liferay me docela zaujal Spring-boot (JHipster) a Play (scala). Jakym smerem myslite ze se bude vyvoj J2EE aplikaci dale vyvijet?

Pred rokem, kdy jsem se poprve setkal s Play frameworkem jsem byl mile prekvapen, nicmene dodnes se v CR evidentne jedna o okrajovou zalezitost a lide (alespon v mem okoli) pouzivaji predevsim kombinaci SpringMVC+Wicket.


perceptron

Re:Vyvoj J2EE aplikaci
« Odpověď #1 kdy: 17. 05. 2015, 15:18:01 »
velke korporacie potrebuju stabilne prostredia - na vela projektoch ide bud klasicke java ee (uz to nie je j2ee; ta skratka je mimo uz asi 5 rokov) kde vladne syntax javy, ejb, kde este zije jsf pripadne jpa. zozeniete na to lopatu a ak nie tak ju rychlo vycvicite lebo do nej nalejete kurzy

detto portlety co je humusacina ale manazeri to pretlacili lebo to predtym pretlacili ini manazeri

alternativne spring lebo ten riesi ramcovo to co java ee. spring mvc je casto pouzivany lebo v nom postavite rest api pred ktore si drbnete lubovolneho javascript frontenda. (a spring boot ide hore lebo bootnete normalnu spring aplikaciu akurat rychlejsie, co sa kombinuje s buzzwordom microservicov)

wicket je zase sice learning curve jak cyp ale mate pomerne rozumne komponentove modely a ked uz mate v teame best practices a custom components tak je to lepsie nez jsf

play a spol su okrajove hlavne kvoli scale: vela manazerov ma dojem ze naprasite priamociary kod ale malokto bude maintainovat kybel znakov prepleteny s funkcionalnym programovanim a ked do toho praskneete async io tak pocet vyvojarov co to poznaju a chcu u vas robit rychlo presiahne vas budget a moznosti

inak v jave trendy asi neopustia istotu java ee, co sa bude menit bude kybel prilahylch techov: mate akku, mate nosql, mate kadejake ine messagequeue, mate integracne veci

Radek Miček

Re:Vyvoj J2EE aplikaci
« Odpověď #2 kdy: 17. 05. 2015, 15:41:04 »
Citace
play a spol su okrajove hlavne kvoli scale: vela manazerov ma dojem ze naprasite priamociary kod ale malokto bude maintainovat kybel znakov prepleteny s funkcionalnym programovanim

Výhodou Scaly je právě to, že tam lze psát mnohem srozumitelnější kód než v Javě.

nobody

Re:Vyvoj J2EE aplikaci
« Odpověď #3 kdy: 17. 05. 2015, 16:20:54 »
<cite>
Výhodou Scaly je právě to, že tam lze psát mnohem srozumitelnější kód než v Javě.
</cite>

S tim naprosto souhlasim a navic je to moje hlavni motivace proc se Scalu ucit. Nicmene muj nazor asi nesdileji managori a lide z HR, kteri chteji obvykle co nejlevnejsi lopaty.

Franta <xkucf03/>

Re:Vyvoj J2EE aplikaci
« Odpověď #4 kdy: 17. 05. 2015, 16:21:57 »
Citace
play a spol su okrajove hlavne kvoli scale: vela manazerov ma dojem ze naprasite priamociary kod ale malokto bude maintainovat kybel znakov prepleteny s funkcionalnym programovanim

Výhodou Scaly je právě to, že tam lze psát mnohem srozumitelnější kód než v Javě.

Než v Javě 8?


perceptron

Re:Vyvoj J2EE aplikaci
« Odpověď #5 kdy: 17. 05. 2015, 16:39:50 »
ja mam scalu rad a kod samozrejme ide pisat prehladne. ale oproti jave x-krat neprehladne pretoze viac moznosti = vyssia narocnost (porov. c++), vacsi learning curve, horsie tooly a u nas slaba komunita

naprd je ze scalistov je malo a ked vam z korporatneho teamu vypadne ten jeden co to pozna ovlada a vie nove veci tak mate problem. zato ako sme sa zhodli manageri radsej najmu 3och javakov nez 1 scalistu do istoty a mate zacarovany kruh

ale v scale lakaju viac tie technologie ako syntax

Radek Miček

Re:Vyvoj J2EE aplikaci
« Odpověď #6 kdy: 17. 05. 2015, 17:06:07 »
Výhodou Scaly je právě to, že tam lze psát mnohem srozumitelnější kód než v Javě.

Než v Javě 8?

Myslím si, že ano. Už takové drobnosti jako je tagování (pro libovolný typ T lze definovat podtyp tvaru T @@ NazevTagu - umožňuje například odlišit id v databázi od počtu prvků, ačkoliv je obojí celé číslo) nebo case classy mohou dost pomoci.

Pak tam je dost věcí, které pomohou, když se používají s mírou. Například implicitní parametry nebo makra.

Franta <xkucf03/>

Re:Vyvoj J2EE aplikaci
« Odpověď #7 kdy: 17. 05. 2015, 18:03:45 »
Výhodou Scaly je právě to, že tam lze psát mnohem srozumitelnější kód než v Javě.

Než v Javě 8?

Myslím si, že ano. Už takové drobnosti jako je tagování (pro libovolný typ T lze definovat podtyp tvaru T @@ NazevTagu - umožňuje například odlišit id v databázi od počtu prvků, ačkoliv je obojí celé číslo) nebo case classy mohou dost pomoci.

Pak tam je dost věcí, které pomohou, když se používají s mírou. Například implicitní parametry nebo makra.

Otázka právě je, jestli to je srozumitelnější. Ty podtypy můžou pomoci, ale třeba ty implicitní parametry nebo makra jsou spíš takový posun k C++ nebo Perlu – více možností → větší složitost a větší nároky na programátora. Ve výsledku tedy menší srozumitelnost. Funkcionální a asynchronní peklo je kapitola sama pro sebe (když se to přežene, tak se to fakt číst nedá).

Pokud všechny ty možností programátoři nepoužívají intenzivně každý den, tak je jejich existence spíš na škodu – stráví víc času přemýšlením, co která konstrukce znamená, než kolik ho ušetří tím, že to jde zapsat úsporněji nebo elegantněji.

andy

Re:Vyvoj J2EE aplikaci
« Odpověď #8 kdy: 17. 05. 2015, 19:22:00 »
Citace
kybel znakov prepleteny s funkcionalnym programovanim
Asi takto na mna posobi scala. Kopec zatvoriek, bodkociarok a ja neviem coho v dlhom slizi riadkov, kde na prvy ani druhy pohlad nie je jasne, vo co go. Pozrite si napr http://www.scala-lang.org/old/node/56.html. Verim, ze je to super, ale prehladne a udrziavatelne mozno tak pre ludi co sa s tym dlhodobo zabavaju (teda nie pre niekoho, kto si precita tutorial). Sice sa scala uchytila, ale podla mna ostane okrajova zalezitost.

Radek Miček

Re:Vyvoj J2EE aplikaci
« Odpověď #9 kdy: 17. 05. 2015, 20:07:15 »
Citace
kybel znakov prepleteny s funkcionalnym programovanim
Asi takto na mna posobi scala. Kopec zatvoriek, bodkociarok a ja neviem coho v dlhom slizi riadkov, kde na prvy ani druhy pohlad nie je jasne, vo co go. Pozrite si napr http://www.scala-lang.org/old/node/56.html. Verim, ze je to super, ale prehladne a udrziavatelne mozno tak pre ludi co sa s tym dlhodobo zabavaju (teda nie pre niekoho, kto si precita tutorial). Sice sa scala uchytila, ale podla mna ostane okrajova zalezitost.

IMO ten odkazovaný příklad (interpret lambda kalkulu se sčítáním) by byl v Javě mnohem méně přehledný.

Scala obsahuje poměrně málo konceptů, tyto koncepty jsou však dostatečně silné, aby pomocí nich šlo vyjádřit mnoho programů (od toho název Scala - škálovatelný jazyk). Hezké je také to, že se Martin Odersky, autor jazyka, snaží počet konceptů dále snižovat.

Osobně jako hlavní negativa vnímám horší typovou inferenci a ústupky, aby Scala dobře fungovala s Javou (nicméně bez nich by se asi neprosadila).

Samozřejmě, souhlasím s tím, co říkají ostatní - a to, že některé vlastnosti jazyka můžete zneužít a vytvořit nečitelné programy (to však není případ odkazovaného programu, ten je snadno čitelný).

Lemming

Re:Vyvoj J2EE aplikaci
« Odpověď #10 kdy: 17. 05. 2015, 20:10:08 »
Co se týče toho Wicketu, tak souhlasím s tím, že má strmější učící křivku, ale to je dáno dvěma věcmi:

1) Má v sobě dost funkcionality - komponenty, modelu, JS/CSS dependencies, package, ...

2) Hlavní problém bývá v tom, uvědomit si, že to _NENÍ_ PHPko převedené do Javy a opatlané spoustou vrstev (jako JSP/JSF). Když se toho člověk zbaví a začne o tom přemýšlet spíš jako o desktopové aplikaci s vykreslováním do browseru, tak má půlku učení za sebou ;)


perceptron

Re:Vyvoj J2EE aplikaci
« Odpověď #11 kdy: 17. 05. 2015, 20:46:05 »
scala ma stale problem pre newbieka ze este len vznikaju best practices a ze tutorialy este stale pisu scala nadsenci ktori sa nevedia casto oprostit od toho hardcore academickeho pristupu (functional programming in scala je napriklad pozadeke vyhul) ked budu dobre best practices (ako ma python) tak moze existovat vela konceptov ale malo odporucanych sposobov ako to implementovat. a samozrejme ked uz sa utrasie binarna kompatibilita a budu normalne vykonne tooly a ide.

dalsia vec je ze ked na pochopenie prikladu potrebujete vediet oop, funkcionalko, monady, inferenciu a generika++ tak to learning curve dviha niekam mimo vesmiru beznych projektov. alebo ak sa v projekte zrazi funkcionalny a oop styl (pripadne v kazdom classe iny) a nahodia implicity je o zabavu ostarane.

Citace
Co se týče toho Wicketu, tak souhlasím s tím,
wicket mal problem s dedicnostou (vsetko su inline oddedene classy) a s modelmi kde sa newbiek mohol uvarit na performenci. potom to uz islo lahko. wicket ma fakt elegantnu filozofiu a la swing

Radek Miček

Re:Vyvoj J2EE aplikaci
« Odpověď #12 kdy: 17. 05. 2015, 21:15:22 »
tutorialy este stale pisu scala nadsenci ktori sa nevedia casto oprostit od toho hardcore academickeho pristupu (functional programming in scala je napriklad pozadeke vyhul)

Pokud přicházíte z jiného funkcionálního jazyka (např. z F#, OCamlu, Haskellu), tak většina věcí z té knihy Functional Programming in Scala vám bude pravděpodobně známa (možná vyjma poslední kapitoly, kde se buduje zjednodušená verze knihovny scalaz-stream). Proto si nemyslím, že by to bylo akademické.

ked budu dobre best practices (ako ma python) tak moze existovat vela konceptov ale malo odporucanych sposobov ako to implementovat.

Lidé kolem scalaz, scalaz-stream a knihy Functional Programming in Scala přejali mnoho best practices z Haskellu, což IMO není špatný výchozí bod.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Vyvoj J2EE aplikaci
« Odpověď #13 kdy: 17. 05. 2015, 22:43:52 »
Scala je fajn jazyk, ale co se týče komplexity, nezadá si s C++. Osobně mám raději Clojure, který je (z jazykového hlediska) mnohem jednodušší - byť křivka učení pro většinu lidí bude strmější - jedná se o LISPový jazyk a nejlepší vývojové prostředí je Emacs (heh, Netbeans Platform framework jsem se naučil dřív než kombo Clojure+Emacs!).

Ale do typického korporátního prostředí plného patlalů (téměř) bez základního vzdělání bych to nedával - tohle chce (minimálně "zatím") malý tým motivovaných lidí, ne prostředí, kde o nasazených technologiích rozhodují manažeři, kteří o nich nemají ani páru a používat to budou i lidé, kteří v životě nečetli ani GoF Design Patterns.

Sorry, ale z hlediska hledání zaměstnání v ČR to není nejlepší volba.

Java EE "is here to stay". Jak už zaznělo - korporátní prostředí chce stabilní vývojové prostředí a v naší firmě (za stěnou máme Javisty; já jsem .Neťák) vidím projekty v Java EE 5 (teď je nejnovější 7; Java 8 je stále jen ve verzi SE). Prostě 10 let staré aplikace musí fungovat, když odejde člověk, musí se rychle zaučit nový (nováček v produkci = s*ačka ve verzovacím systému; se s*ačkou v Javě se pracuje mnohem lépe než ve Scale nebo v Clojure - jednoduchý, "bezpečný" (minimálně přítomnost garbage collector nutná), silně staticky typovaný jazyk s dobrým vývojovým prostředím (které podporuje automatický refaktoring) je nutnost). A hlavně žádné časté změny, každá novinka zvyšuje finanční náklady (musí se zaučit stávající lidi + ti, kteří to za 10 let budou udržovat, přijdou do kontaktu s nekonzistentním kódem - někde se bude dělat "po novemu" a jinde "po staru"). Nicméně TOHLE je častá realita běžného života, ne žhavé novinky. Je to úplně jiný svět než lze vidět na weblozích nadšenců píšících o nejnovějším server-side JavaScript frameworku, mnozí z nich si nikdy nesáhli na aplikaci s delším životním cyklem než 2 roky od zrodu do hrobu. A v .Netu to není jiné, já jsem nedávno dostal na stůl úpravu ASP Classic (technologie nevyvíjená snad 15 let!) aplikačky, která stále běží v produkci. V posledních 10 letech se o to nikdo moc nestaral a vystřídala se na tom kupa programátorů, kteří tu technologii v životě neviděli (jako třeba já). Podle toho ten kód vypadá - s*anec jak cyp. Nikdo to nebude přepisovat - dokumentace neexistuje a nejsou peníze na vývoj nové. "Welcome to corporations." Volba technologie není o tom, co chcou lidi dělat a jak chctějí profesně růst, ale jak manažerům vyjdou čísla - ostatně programátoři jsou čísla v položce "náklady" a to ne zrovna malá čísla.

Spring Framework je hodně oblíbený (ale spíš na menších projektech) a byť ke svému běhu potřebuje "jen" Java SE (takže lze využít Java 8), je zaměřený na podobnou klientelu, která by jinak nejspíš sáhla k Java EE (EJB+ESF). Spring 4 rozhodně není o tunách XML kódu a přehnaných složitostech, Spring Boot dokáže dokonale "vykopnout" (funkční aplikačka během pár vteřin), dokumentace je fajn (i pro mě - člověka rozmazleného z MSDN) a hostování na serveru je záležitostí spuštění příkazu "java -jar myKillerApplication.jar". Byl jsem velmi mile překvapen. Když jsem hledal kvalitní hosting pro malou triviální aplikaci (která ale musí běžet furt, jinak přijdu o "reputaci"), zjistil jsem, že ceny cloud serverů jsou velmi podobné cenám lepšího hostingu - tak co bych se (byť i na triviální web) štval s nějakým PHP nebo platil licence za Windows, když mám tohle zadarmo. Radost pracovat. Jenomže tohle je "můj kšeft", můj server (na kterým si dělám co chci já) a náklady jdou z mojí kapsy - úplně jiný svět než korporace.

O Wicketu je též hodně slyšet. Ale je to trochu jiná liga než Spring - Spring chce být kompletní náhrada za Java EE a Spring MVC je MVC framework, Wicket je čistě webový framework s komponentovou architekturou (ne MVC). Wicket je tedy framework na "vyšší úrovni abstrakce" než Spring MVC (což podle mě není dobře, ale názory se různí - JSF je též komponentový fwk). Znáš-li Play, zkus Spring MVC přes Spring Boot. Je to asi tak nejblíž (už jsem zmínil - přes Spring Boot si můžeš vybrat, jestli výstup bude .jar s integrovaným kontejnerem nebo .war - je to otázka drobné změny v pom.xml).

Radek Miček

Re:Vyvoj J2EE aplikaci
« Odpověď #14 kdy: 17. 05. 2015, 23:16:55 »
A v .Netu to není jiné, já jsem nedávno dostal na stůl úpravu ASP Classic (technologie nevyvíjená snad 15 let!) aplikačky, která stále běží v produkci.

Zrovna .NET na zpětnou kompatibilitu příliš nehraje (a neříkám, zda to je dobře nebo špatně).