it-swarm-eu.dev

Proč se pro vývoj moderních webových aplikací nepoužívá Java)?

Jako profesionál Java programátor, snažil jsem se pochopit - proč nenávist vůči Java pro moderní webové aplikace)?

Všiml jsem si trendu, který z moderních webových startupů, relativně malé procento z nich vypadá, že používá Java (ve srovnání s celkovou popularitou Java).) Když jsem se zeptal pár na toto, obvykle jsem dostal odpověď, jako: "Nenávidím Java s vášní.") Zdá se však, že nikdo není schopen dát definitivní odpověď.

Slyšel jsem také, že tato stejná komunita pro spuštění webu negativně odkazuje na vývojáře Java) - více či méně naznačuje, že jsou pomalí, ne kreativní, staří.

V důsledku toho jsem strávil čas prací na vyzvednutí Ruby/Rails, v podstatě abych zjistil, co mi chybí. Ale nemohu si pomoci, abych si pomyslel: „Mohl bych to udělat mnohem rychleji, kdybych používal Javu,“ hlavně kvůli svým relativním zkušenostem.

Ale také proto, že jsem neviděl nic kritického „chybějícího“ v Javě, což mi bránilo ve vytváření stejné aplikace.

Což mě přivádí k mé otázce:

Proč se v moderních webových aplikacích nepoužívá Java)?

  • Je to slabost jazyka?

  • Je to nespravedlivý stereotyp Java), protože to bylo tak dlouho (je nespravedlivě spojeno s jeho staršími technologiemi a nedostává uznání za své „moderní“ schopnosti)?

  • Je negativní stereotyp vývojářů Java vývojáři příliš silný?) (Java už prostě není „cool“)

  • Jsou aplikace napsané v jiných jazycích skutečně rychlejší, lze je snadněji udržovat a mají lepší výkon?

  • Používá se Java pouze velké společnosti, které jsou příliš pomalé na to, aby se přizpůsobily novému jazyku?

393
Cliff

Moderní startupy musejí vstoupit na trh co nejdříve. Aby uvolnili svou webovou aplikaci Java), nemusejí trávit asi šest měsíců.

Twitter byl například postaven pomocí Rails/Ruby, ale jakmile se stal nezajištěným, migroval do JVM.

Nemluvě o tom, že vývojový proces není produktivní: kód -> kompilovat -> nasazovat, zatímco je v rámci jako (Rails/Django/Grails): spusťte testovací server -> kód -> měňte věci a podívejte se, co se stane.

Dobrou zprávou je, že JRebel vám umožňuje okamžitě vidět změny kódu.

174
Chiron

Podle mých zkušeností Java pro webové aplikace je nadměrná pro malé aplikace.) Jednoduchý blog s jednou databázovou tabulkou obsahuje například položky blogu, což lze provést v něčem mnohem jednodušším.

Obvykle jsem viděl Java) mnohem lépe v mnohem větších webových aplikacích (think bank a pojišťovnách), které komunikují s řadou dalších systémů (jako jsou back-end mainframe a databáze a peer web- služby pozadí systémy dávkového zpracování ... vše ve stejné aplikaci).

Z toho, co jsem viděl, architektura webové aplikace JavaEE je obvykle více, než je potřeba pro malé/jednoduché webové aplikace.

Naprogramoval jsem webové aplikace Java na 10 let, než jsem před 4 a více lety přešel na python. Cítím, že jsem mnohem produktivnější pomocí python a dokážu mnohem lépe udělat za kratší dobu, a abych byl upřímný, jsem mnohem šťastnější, když se vyvíjím v pythonu. Zde jsou některé z důvodů, proč si myslím, že python je lepší než Java na základě mé osobní zkušenosti, vaše míle může být velmi.

Webové rámce:

Když jsem poprvé začal programovat webové aplikace v Javě, Struts právě vyšel a nebylo to skvělé, ale byla to nejlepší věc, která byla k dispozici. Vytvořil jsem spoustu aplikací podpěr a několik dalších rámců. Kdykoli vyšel nový rámec (Tapestry, Wicket, GWT, proužek, grály, AppFuse, Play, RichFaces, jaro atd.), Vyzkoušel jsem to a uviděl, jestli to bylo lepší, a většinou to bylo jen trochu lepší , a někdy vůbec ne lepší. Musím říci, že hrací rámec je krok správným směrem.

Baterie nejsou součástí balení:

Jednou z nejvíce nepříjemných částí Java byla skutečnost, že většina knihoven, které používáte, nebyla zahrnuta do samotného Java, museli jste zahrnout tunu libs třetích stran z míst jako Apache commons. Pokud používáte něco jako hibernace s jakoukoli velkou knihovnou, skončíte v závislostním pekle Jar, kde hibernace potřebuje jednu verzi sklenice a něco jiného potřebuje jinou verzi. Pokud načtete soubory jar ve špatném pořadí, máte smůlu. Musíte se spoléhat na nástroje, jako je maven, a břečťan, abyste mohli spravovat své závislosti, a to jen přinese do vašeho projektu více závislostí, což má za následek obrovské projekty. Měl jsem nějaké válečné soubory 100 MB + válečné soubory pro nejjednodušší webové aplikace.

Příliš mnoho možností:

Z nějakého důvodu se zdá, že existuje příliš mnoho různých způsobů, jak udělat to samé v Javě. Podle wikipedie existuje více než 38 různých webových rámců pro Java ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) a 23 různých ORM ( http://cs.wikipedia.org/wiki/List_of_object-relational_mapping_software#Java ), abychom jmenovali jen několik příkladů. Pokud se podíváte na jiné jazyky, mají rozumnější číslo. Někteří lidé si myslí, že mít spoustu možností je dobrá věc, ale není to tak, že by to vedlo ke spoustě zbytečného úsilí v komunitě pro vývojáře, každý znovuobjevuje stejné kolo a pokud jste novým jazykem, který máte, příliš mnoho možností na výběr.

Aplikační servery:

Webové aplikace Java jsou opravdu těžké a ke spuštění vyžadují spoustu prostředků. Jsou obzvlášť hladoví v paměti. Stejně jako jakýkoli jiný software mohou být vyladěni tak, aby snížili stopu jejich zdrojů, ale ve srovnání s jinými jazyky je jejich nastavení mimo krabici hrozné. V minulosti jsem používal weblogic, websphere, Jboss, Tomcat a molo. První tři jsem použil, když jsem byl nucen používat EJB, ale i když nepoužíváte EJB, byly to velké aplikační servery a někdy bylo obtížné je nakonfigurovat a běžet správně. Tomcat a Jetty jsou mnohem lepší a snadnější nastavení, ale stále jsou zdrojovými prasaty.

Hosting aplikací:

Pokud nepoužíváte vlastní server, je opravdu těžké najít sdílený hosting pro vaše aplikace Java za rozumnou cenu. Hlavním důvodem je to, že aplikace Java vyžadují ve srovnání s jinými jazyky mnohem více paměti, takže pro poskytovatele sdíleného hostingu nemá smysl utrácet cenný RAM provozováním Java site, kdy mohli na stejném místě provozovat 5 php webů. To znamená, že existuje méně poskytovatelů, kteří nabízejí hosting [Java], což zase znamená vyšší náklady na provoz vašich webových stránek.

Čas vývoje:

Když jsem se vyvíjel v Javě, ocitl jsem se mnohem pomaleji než to, co mohu dělat v pythonu. Musel bych provést změnu, kompilovat, znovu nasadit a poté otestovat, což zpomaluje iterační proces. Vím, že existují způsoby, jak to zrychlit, ale i když je to nejlepší, cítil jsem se mnohem pomaleji než to, co v Pythonu mohu udělat.

V Pythonu je také mnohem méně kódu kotlové desky, abych udělal totéž, takže trávím méně času vývojem kódu.

Java se cítí více než promyšlená v mnoha částech. Mnoho rozhraní API a rozhraní je způsob, jak komplikovat to, co chcete dělat. A každý a jejich bratr si myslí, že jsou architektemJava, a výsledkem jsou velké komplikované systémy, se kterými je obtížné pracovat a rozvíjet se.

IDE:

Když jsem se vyvíjel v Javě, cítil jsem se přilepený k IDE, bez toho jsem byl ztracen. IntelliJ je nejlepší IDE na trhu a bylo těžké přejít na python, protože pro Python nebylo nic podobného. Takže místo IDE jsem použil textmate, což je jen normální textový editor. Zpočátku to bylo těžké, ale protože to byl jen textový editor, byla to opravdu rychlá a pohotová aplikace. Mohl bych otevřít celý svůj projekt během několika sekund, zatímco když chci otevřít projekt v IDE, mohlo by to trvat minutu nebo déle, se strojem s tunou RAM. Tvůrci IntelliJ vyšli s editorem python zvaným pycharm, koupil jsem ho, když vyšel poprvé, a je to skvělé. Ale uvědomil jsem si, že pro python nepotřebuji IDE, s textovým editorem jsem v pohodě. Když se vracím k práci na Java webových aplikacích, které musím čas od času udělat, zkusím použít textový editor, ale ještě jsem to docela nezvládl. Já osobně potřebuji IDE pro Java více, protože když něco zkazím, trvá to déle, než se zkompiluji a znovu nasadí, což mě zpomalí.

ORM:

Když jsem poprvé začal používat Hibernate jako ORM, myslel jsem si, že je skvělý, měl to problémy a nebyl dokonalý, ale bylo to lepší než to, co jsem dělal předtím. Byl jsem s tím spokojený, dokud jsem nepodal žádost s Djangovým ORM na projektu python, a to mi otevřelo oči, tak má ORM fungovat. Po tomto projektu jsem se vrátil do režimu spánku a já jsem se cítil zklamaný a toužil po návratu do ORM Djanga. Dalším skvělým python ORM je sqlalchemy, který je podobný ORM Djanga, ale trochu odlišný. S ROR ORM mám omezené zkušenosti, ale z toho, co si pamatuji, to bylo docela dobré.

Šablony:

Webové templingové systémy v Java nejsou tak dobré, a myslím, že jsem je všechny vyzkoušel (dlaždice, freemarker, rychlost atd.). Většina z nich nabízí pouze základní funkčnost a je s nimi bolest. Na straně Python jsou mé dva oblíbené šablony Django a Jinja2, mají vše, co bych mohl v templatingovém motoru potřebovat, a jsou opravdu snadno použitelné.

135
Ken Cochrane

Start Ups chtějí lesklý. Ať už je lesklý: RoR, Groovy, Grails, OOP w/PHP, Foobar, Wibble, Narf atd.).

Enterprise chce stabilní, spolehlivé a škálovatelné: Java a .NET fit tento účet (pokud se provádí správně).

Aktuální vystoupení: Financial Services. Platforma: ColdFusion (v podstatě a Java Tag Library) a Java.

Předchozí koncerty:

  1. Vzdělávací testovací služby - ColdFusion
  2. Pojištění pro vysoké riziko - ColdFusion a Java
  3. 401k - ColdFusion a Java
  4. Cestujte - Java w/interní aplikace ColdFusion)
  5. Cenné papíry - ColdFusion (pre-Java verze)

Toto jsou všechny weby s velkým objemem a vysokou bezpečností. Nikdo z těchto společností nikdy nezvažoval PHP, některé se podívaly na RoR a viděly příliš mnoho problémů. Společnost 401k měla sesterskou společnost provozující aplikaci .NET s kompetentními vývojáři, aplikace právě každý týden havarovala. Nakonec jej převedli na Java) a získali stabilitu.

Jediní lidé, kteří se dívají dolů na Java), jsou ti, kteří s tím nemají žádné nebo jen skutečné zkušenosti nebo se podíleli na špatných implementacích a nyní jsou plachí. skvělé děti to používají, proč ne já?

94
Adrian J. Moreno

Kromě odpovědi na odpověď FrustratedWithFormsDesigner : Protože myslím, že vaše otázka se více zaměřuje na menší weby, je pro mnoho lidí důležité vzít v úvahu důležitý aspekt: ​​ Hosting je všudypřítomný pro PHP, ale jeho těžší pro Java nebo ASP weby) Toto však není vada těchto jazyků.

73
sebastiangeiger

Java absolutně is pro moderní vývoj webových aplikací. Zejména poté, co se dostanete na mírně větší/složitější/škálovatelnější konec spektra webových aplikací.

Pokud vás zajímají moderní, produktivní nástroje a rámce, podívejte se na:

Domnívám se však, že skutečně nejmodernější vývoj webových aplikací na platformě JVM bude pravděpodobně proveden v jednom z nových jazyků JVM , spíše než pomocí Java přímo, s Java jednoduše poskytuje páteř, pokud jde o základní knihovny a back-end infrastrukturu. V Groovy se děje spousta webového vývoje ( Grails ), Scala ( Lift a Play ), JRuby ( JRuby on Rails ) a Clojure ( Noir , Ring/Enlive + spousta vlastních rámců) abychom jmenovali jen několik.

Se všemi inovacemi, které se odehrávají v novém jazykovém prostoru JVM, osobně mám podezření, že Java se nakonec stane „sestavovatelem programování na straně serveru“).

70
mikera

Počítá se Google, Amazon nebo LinkedIn jako moderní?

Java se používá pro moderní webové aplikace. Pokud se podíváte na podnik, jedná se o nejpoužívanější jazyk pro webové aplikace (interní).

To znamená, že Java prošlo obdobím, kdy se standardy pro vývoj webových aplikací pokoušely být pro každého všechno (pravděpodobně stále ještě). „Neopakovat se“ byla reakce na peklo xml a dlouhá sestavovací cykly Java webový vývoj). Výsledkem je, žeJava (EJB, Struts, JSF atd.) se stalo věcí všech nových paradigmat se snaží překonat.

Java, jazyk je podrobný. To je pro a con (skvělé pro údržbu, saje pro dev). Existuje celá řada moderních jazykových funkcí, které se dosud nezměnily na Java), které mohou podstatně zkrátit dobu kódování (vlastnosti, události, uzávěry, generátory, porozumění seznamu atd.). mohou být frustrující, když přicházejí z modernějšího jazyka. To znamená, že je obtížné přidat se k dospělému jazyku, aniž by se stali krysy hnízdo, které se stává C #.

Mnoho jazyků používaných v moderním vývoji webu je dynamicky psáno. To umožňuje nástroje, které mohou dynamicky znovu načíst kód, jak je psán (to je obtížnější dosáhnout ve statickém jazyce - jrebel). Vzhledem k tomu, že vývoj webových aplikací se hodí k rychlým iteracím, dynamické opětovné načtení je obrovská výhra. Výrazně snižuje vývojový cyklus u projektů na zelené louce a usnadňuje získání správného uživatelského rozhraní a uživatelského rozhraní (pokus a omyl od přírody).

Místo mají také statické jazyky. Pro logiku backendu, která je složitá, musí běžet roky, musí se škálovat bez problémů, musí být velmi rychlá a musí být zcela bezchybná, preferovány jsou staticky zadané jazyky (jako Java nebo dokonce C)) .

Navíc, jak roste počet vývojářů/obrat a produkty dozrávají pravděpodobnost dobře míněných lidí, kteří zavádějí chyby raketového stoupání. Přísnost a disciplína, kterou dobře navržený projekt Java (rozhraní, vzory a svěcená voda pro ty php upíry :)) vynucuje, pomáhá snižovat dlouhodobé riziko. I když toho lze také dosáhnout testováním jednotek, bezpečnostní síť odvozená ze statické kontroly (a statických analyzátorů, jako jsou findbugs a clang), poskytuje zabudovanou úroveň pokrytí kódem, kterou je obtížné replikovat pomocí ručně psaných testů. Nechápejte mě špatně, měly by existovat testy jednotek a funkční testy, ale skutečné organizace nikdy nedosáhnou 100% pokrytí. Co kontrolují, statické analyzátory dělají.

Ve velkých projektech (definovaných více podle velikosti týmu než velikosti kódu), kde existuje složitá spolupráce mezi samostatně vyvinutými částmi kódu, jsou stále preferovány jazyky jako Java). Příklady zahrnují velké/komplexní webové aplikace, jako jsou finanční makléři (ameritrade), finanční burzy (nasdaq, nyse, možná london po selhání .net), online bankovnictví (téměř všechny), e-mail (google), aukce (ebay) atd.

Z hlediska výkonu a měřítka nic nepřekrývá platformu Java), protože je to kombinace škálovatelnosti a výkonu pro webové aplikace (v závislosti na tom, jak počítáte rozdělení aplikací na facebooku). Například Twitter musel přepsat velká část je Ruby infrastruktura v Scala na Java VM v pořádku) vysadit neúspěšnou velrybu zpět na moře. Slyšel jsem o jiných velkých příkladech, ale právě teď mi unikají.

Rovněž stojí za zvážení bezpečnosti. Zatímco Java pluginy prohlížeče utrpěly spravedlivý podíl bezpečnostních chyb), Java samotná platforma je jednou z bezpečnějších vytvořených platforem. Java webové aplikace mají pověst velmi bezpečné. Je to praxe kódování, knihovny a architektura dlouho odrazují chyby, které umožňují útoky, jako je injekce sql nebo přetečení vyrovnávací paměti. Zatímco jiné webové platformy (Rails) mají dobrou pověst zabezpečení, žádný nepřekonává Javu.

Sečteno a podtrženo, většina webových aplikací je technicky jednoduchá. Pro jednoduchost, Java je často nadměrná (stejně jako za starých časů, kdy jsme je psali v C :)). Pokud je ale webapp složitý (backend nebo jinak) nebo se očekává, že bude mít 100 a více vývojářů, Java je těžké porazit).

-

V osobní poznámce používám Grails hodně, protože mi dává to nejlepší z obou světů (to samé lze říci o JRuby, o kterém slyším, že je ve světě Ruby) stále populárnější) .

BTW - Zjistil jsem, že vzestup PHP je skutečně nepochopitelný. PHP jako jazyk je hrubý ekvivalent Perlu v čitelnosti a VB v kvalitě výsledků. Povzbuzuje hrozné praktiky, je téměř nemožné je udržovat, knihovny třetích stran zřídka fungují podle očekávání a má syntaxi, která by Larryho Wallse upoutala ... dobře ... a Jediné vysvětlení, které mohu vykouzlit, je to, že se hodí k inkrementálnímu učení (jako VB). Jinými slovy, můžete udělat něco užitečného, ​​když víte o programování/administraci velmi málo a své znalosti můžete rozšířit o malý kus. Z hlediska adopce je toho třeba hodně říci. Avšak pro každého, kdo každý musel podporovat nebo nahradit jednu z miliard aplikací VB) aplikací, které napsali „programátoři“ v v korporátním světě/mfg pravděpodobně potřásáte hlavou a plánujete svůj odchod do důchodu. :)

41
user56365

No, nedávno jsem se setkal s chlapem Java), který byl opravdu nadšený novým projektem Spring Data, kvůli tomu, jak málo kódu je zapotřebí, abyste získali základní přístup CRUD k vaší databázi.

Dokážu sestavit CRUD app pomocí Rails (nejen přístup k db, ale zobrazení a řadiče) s několika příkazy.

(Z horní části mé hlavy: nový projekt, 1 příkaz lešení na entitu, 1 příkaz k migraci databáze, 1 příkaz ke spuštění serveru.)

S jazykem to nemá nic společného, ​​je to všechno o nástrojích. A zdá se, že dynamické jazyky mají tendenci mít nástroje a rámce, které odstraňují velké množství kódu. (Abychom nahradili náš nedostatek silných IDE, které pro nás vytvářejí kotlovou desku.)

Také cítím, že dynamické jazyky mají tendenci usnadňovat psaní takových nástrojů a rámců. Dokážu si kód prohlásit, Padrino nebo Rails (Ruby web frameworks)) mnohem snadněji, než si mohu dát kód pro slovo Spring Roo. Může to být způsobeno tím, že vím Ruby ale mnohem lepší, než znám Java).

38
Robbie

Java byla v posledních letech umístěna jako „podnik“. Což je na druhé straně spektra toho, co startup potřebuje. Při vývoji webových aplikací potřebujete 4 věci - bezbolestný přístup k databázi, skvělou manipulaci s řetězci, cukr ze syntaxe a rychlý iterační proces, abyste provedli četné malé změny, které aplikace vyžaduje.

Výkon, škálovatelnost a stabilita jsou v seznamu priorit o něco nižší.

Také Java je velmi nevhodný jazyk pro kódování. Dostal revoluční schopnost používat řetězec v příkazu switch právě včera. A javascript je velmi hackerský jazyk, takže po vývoji vašeho rozhraní se cítíte velmi omezeni, když vrátíte se do Java.

Takže předpokládám, že to jsou důvody, proč se webstartupům Java nedaří.

24
Daniel Iankov

V současné době pracuji ve společnosti, která má několik vývojářů „nenávidím Javu“. Také mě to omračovalo. Určitě nenávidím všechny hromady technologií, které jsou k dispozici s Java. To ztěžuje přijímání rozhodnutí. Je to jako když máte příliš mnoho možností, nemáte na výběr. Musíte trávit čas se stovkami rámců, abyste skutečně přijít s rámcem, který pracuje pro vás. Standardní architektura Servelt je pro většinu aplikací komplikovaná. To neplatí pro Ruby, Django a tak dále). Jedná se spíše o jediný rámec než o jazyk.

Největší stížnosti, které slyším od vývojářů

  1. Syntaxe je příliš dlouhá. Abychom mohli něco vytisknout, musíme napsat System.out.print. Nemůžete opravdu použít jednoduchý VI jako editor a napsat pracovní kus kódu během několika hodin.
  2. Slabé testovací rámce. Přestože jsou testovací rámce velmi podobné v Java a Ruby), Ruby udělá krok o krok vpřed tím, že věci budou snadno dostupné pro testování. To platí zejména, pokud ve vaší aplikaci rozsáhle používají databázi. Dokonce i mnoho webových rámců o testování nemyslí.
  3. Šablony jsou bolest. Z relativně jednoduchého jazyka vytvoří nudlovou polévku.
  4. Není vpohodě. Většina Java aplikace jsou psány v obrovských společnostech, které jsou spojeny s byrokracií, která se vývojářům nevychází tak dobře. Lidé si nemyslí Google, když si myslí Java. Google == Python. také hodně dělat, aniž by vyšly knihy, které by ukazovaly X za Y dny.
  5. Nelíbí se vám kompilace. Pro většinu vývojářů je kompilace desetiletý fenomén. V 80. letech to mělo smysl u C, ale mordernové počítače dokážou mnohem víc. Nepíšou kód ve kompilovaných jazycích. Java je jeden z mála jazyků, který je kompilován a používá se k psaní webových aplikací.
  6. Příliš mnoho Oops Koncepty. I když vývojáři tiše přijali doménu Oops). Nelíbí se jim to v plném rozsahu. Nelíbí se jim, když píšete aplikaci s 10 třídy, kdy každá třída dělá jen jednu věc. Umožňuje vám otevírat stovky souborů a představovat si interakci napříč stovkami tříd, někdy s frameworky. Dělá celou programovací činnost fuškou. To by mohlo platit pro většinu jazyků, ale viděl jsem to Java Vývojáři věnují hodně pozornosti tomu, co třída dělá. Je to Java Vývojáři, kteří často přicházejí s kódem se 100 třídami. To je dobré z mnoha perspektiv ale ne Java to nenávidí).

Celkově tedy Java) ukládá strmou křivku na začátku projektu, což znamená příliš mnoho peněz, které je třeba věnovat. Přidejte k tomu obrovskou komunitu připojenou k Javě, přičemž každý myslí různými způsoby a nikdo, kdo opravdu oštěpuje hlavu celé komunity. Nevidí ani rozhovory a konference vedené komunitou, které předvádějí všechny skvělé nové věci. Žádné nové skvělé knihy. Java vypadá to, že půjde dolů) protože to bylo zvyklé řešit příliš mnoho různých problémů před několika lety.

18
arunmur

Rámce pro dělání Java vývoj webových aplikací mají docela dost křivek učení, jsou často nadměrné pro to, co potřebujete, a velká část nepřímosti potřebná k tomu, aby věci fungovaly, je prostě ... bolestivá ...pracovat s.

Dříve jsem pracoval pro společnost, která se zabývala vývojem jaro/Java, a ten rámec jsem byl v nejlepším případě těžkopádný. O Jarním rámci nemám moc příjemných věcí, kromě toho, že jsem měl přítele, který dříve vyvíjel Struts, a myslel si, že Struts je ještě horší. Webový rámec není nic jako dělat stolní aplikace nebo mobilní (např. Android) aplikace a má spoustu velmi abstraktních nápadů, které zabere nějaký čas, než to opravdu pochopíte (i když vám to jistě poskytne spoustu energie a schopností, pokud jste profesionál a děláte něco opravdu složitého, jako je podniková aplikace). Miluji programování Java pro mobilní nebo stolní zařízení, ale Java pro webové aplikace?) Není to tak.

Osobně jsem neudělal žádné programování osobně v Ruby/Rails, ale můj přítel, který předtím dělal Struts, nyní dělá Ruby web programování) a svědčí o tom, že věci, které je obtížné udělat v Java web programování vyžaduje mnohem méně kódu a složitosti, aby bylo dosaženo v Ruby. Určitě existuje křivka učení k různým syntaktickým a jazykovým pravidlům, ale pro prototypingové aplikace má výhody v tom, kolik kódu je vyžadováno. Jak jsme již uvedli, rozšiřitelnost je také problém, který je třeba zvážit, a jeden z důvodů, proč jsou vyspělejší aplikace ve více hip jazycích tak často neviděny.

14
Jessica Brown

Záleží to na nákladech a trendech. Web 2.0 Startup je vytvořen vizionářem mladším 30 let, který má více talentů než peněz (samozřejmě zobecňuji, ale to je to, co uvidíte „v průměru“). Bude používat jazyk, který zná, protože dělá programování (spolu s možná několika přáteli). Je to pravděpodobně samouk programátora.

Java byla zacílena jako podnikové prostředí (Java, myslím jazyk, rámec a standardy). Existuje řada drahých nástrojů, které podniky IBM, Oracles a BEA na světě chtějí prodávat podniky.

Kroky, které vám pomohou ovládat Java, jsou složité a/nebo drahé. Vím, že se tam krajina mění, ale je příliš málo pozdě?

Po startu zisky trakce přichází růst. Nábor talentovaných vývojářů je obtížný. Většina programů „se staňte programátorem za šest týdnů“ učí Java (nebo .NET) a trh je nasycen „šestitýdenními programátory“ (kupodivu jsem viděl vývojáře s životopisy říkajícími 7 let zkušeností, které stále ukázat znalosti šestitýdenního programátora). Použití non-mainstreamového „podnikového“ prostředí může být přirozeným filtrem pro šestitýdenní programátory. Učit se Ruby nebo Scala _ mimo pracovní požadavek vyžaduje obětavost a osobní investice. Toto je pro mě největší ukazatel potenciálního pro kandidáta.

Znalosti přicházejí se zkušenostmi, ale specializovaný/vášnivý programátor získá znalosti rychleji (v průměru) než někdo bez tohoto odhodlání/vášně. Stejně jako dítě, které miluje hraní na kytaru, se zlepší rychleji než dítě, které se věnuje lekcím, protože ho jeho otec udělal.

14
Michael Brown

Java je příliš komplikovaná. Dělám tunu prácePHP a ve většině situací je to prostě jednodušší a rychlejší. Schopnost pouze SSH na serveru otevřít soubor php provést změny uložit a udělat, je skvělá. Několik aplikací Java, na kterých jsem pracoval, vždy vyžadovalo restart pro nejjednodušší změnu. (neříkám, že je to vždy ten případ, s čím jsem delt). Kromě toho je hostování PHP levné a snadno dostupné.

Také si myslím, že to, co máte alespoň s PHP, je spousta vývojářů, kteří jako já začali před 14/15 lety se statickým HTML. Jak se věci vyvíjely, začali jsme na naše stránky přidávat PHP, protože to bylo snadné, jednoduché a cenově dostupné. V průběhu let se tento jazyk rozrostl a rozšířil své schopnosti daleko za hranice skromných začátků a nyní se těžko snaží být tím, co si myslím, že je spousta věcí, které ve skutečnosti nejsou.

Na druhou stranu, většina PHP devs vím vidět Java jako tento obrovský, příliš složitý gorila 800lb, téměř jako když vystoupí z 18-kolového návěsu, aby sjel do obchodu s potravinami a získal bochník chleba.

Snažil jsem se naučit Javu, moje první dojmy, kde to bylo velmi dlouho navinuté a navozující karpální tunel. Kromě toho mi to začalo spoustu otázek, které se pravděpodobně zdají veteránovi Java snadné. OpenJDK, nebo Sun? Tomcat, nebo Glassfish, nebo? Navíc se zdá, že každé úvodní knihy Java vás začnou psát kód pro příkazový řádek. Myslím, že většina lidí v dnešní době zjistí, že snooze fest.

14
Cyrus

Můj tým a já v současné době vyvíjíme webovou aplikaci na zelené louce v Java 6 + Stripes). V loňském roce jsem také pracoval na jiné webové aplikaci na zelené louce pomocí Java 6 + Stapler (poněkud neznámý webový rámec vyvinutý Kohsuke Kawaguchi slávy Hudson/Jenkins).

Java je naprosto používána pro moderní vývoj webových aplikací. Určitě to nemá „sexy“ přitažlivost Ruby nebo jiné dynamické jazyky), ale já jsem zdaleka přesvědčen, že dynamické jazyky jsou dobrá věc, jakmile se projekt začne rozšiřovat.

Moderní Java jsou velmi konkurenceschopné s ASP.NET, pokud jde o výkon, a oba jsou řádově řádově rychlejší než jakýkoli dynamický jazyk VM, o kterém vím.

Nechápejte mě špatně ... Neříkám Java je vždy nejlepší volba (ne na dálku!) - ale ani to není vždy špatná nebo „zastaralá“ volba.

12
Daniel Pryden
  1. Java je složitější se učit než PHP/Python/Ruby
  2. Ekosystém Java je pro začátečníky velmi komplexní, velmi velký a docela matoucí
  3. S Javou je spojeno mnoho historicky špatných rámců s negativní pověstí, musíte vědět, které rámce se zbytečně ztrácí čas
  4. Nástroje pro vytváření Java jsou složité (maven a mravenec)
  5. Java nemá modulové systémy, které se snadno používají (OSGI je příliš složitý)
  6. Java IDE, jako je Eclipse), zatímco velmi výkonný s úžasnými funkcemi, je obtížné konfigurovat pro efektivní vývoj webu bez velkého množství zkušeností.
  7. Pokud jako server používáte něco jiného než Tomcat nebo Jetty, budete frustrováni dlouhými časy spuštění WebSphere/WebLogic/JBOSS
  8. Java EE řeší problémy, které mnoho lidí nemá, jako jsou distribuované transakce

Nový vývojář, který se dostane do profesionálního rozvoje, najde Java Order of Magnitude těžší než Rails, python nebo php, aby s ním mohl jít, takže jde s tím, co je snadné se naučit).

Poté, co jsem řekl vše výše, rozhodl jsem se použít Java pro můj Startup), protože správně nakonfigurované Java vývojové prostředí je velmi produktivní pro práci. Správně nakonfigurovaným myslím.

  1. Doba spuštění kratší než 10 sekund
  2. Správně nakonfigurovaný pracovní prostor Eclipse, se všemi kostry wrangled up and nakonfigurován
  3. Dobrý výběr knihoven (jaro, jaro MVC, jaro sociální, jaro zabezpečení, JPA, hibernace, rychlost, .... atd.)
  4. Rychlé vývojové stroje s SSD
  5. Orielly Safari předplatné
12
ams

Asi před 5 lety jsem já a kolega dostali programovací úkol pro nějaký interní projekt. Jednoduchý úkol, který vyžadoval analýzu příkazů.

S celou věcí jsem přišel asi v 80 řádcích Java kódu a můj kolega vzal týden, asi 20 Java tříd a mnohem více řádků Java kódu udělat to samé. Netřeba dodávat, že jeho kód byl vybrán.

To mě přimělo divit. Všude byla oceněna složitost. (Pracoval jsem v jedné z největších společností v oblasti softwarových produktů.) Java byl nástroj výběru a návrhové vzory byly způsob, jak kódovat.

Nyní je to mysl nebo jen arogance, která odmítá jednoduchost. Vždycky jsem si myslel, že by měl převládnout zdravý rozum. Ať už se jedná o podnik nebo jednoduchou webovou aplikaci, základní případy použití jsou stejné. Mělo by být správné a ověřitelné.

Java už nepoužívám z několika důvodů. Jedním z faktorů - komplexnosti je však převládající přístup k vývoji softwaru v tuně Java devs.

Pokud jde o škálování dynamických jazyků, JVM je výsledkem desetiletí výzkumu. Stejně se děje i pro Ruby atd.

Scala je jeden jazyk, který považuji za velmi chytrý a praktický. Hrát si! with Scala je stejně vynikající pro vývoj webových/podnikových aplikací jako jakýkoli tam venku.

Co se týče toho, že Ruby a Rails jsou lesklou novou věcí pro začínající podniky, je velmi obtížné najmout spolehlivého vývojáře Rails. Ve skutečnosti je to překážka pro jakýkoli start-up, zatímco nepřeberné množství Java devs by mělo mít větší obchodní smysl.

12
Ar Wen

V nedávný rozhovor s, Joseph Snarr, technický vedoucí pro google plus vysvětlil, jak aplikace používá Java Servlety pro zadní část a JavaScript na přední straně).

Takže odpovědět na vaši otázku Java se stále používá pro velmi moderní vývoj webových aplikací. Jen ne pro začínající podniky, které v poslední době dostávají tolik tisku.

Myslím, že důvod, proč mnoho začínajících podniků používá jiné technologie, je ten, že jsou svůdnější a mají více propagovaný open source push za nimi.

11
Greg Guida

Otázka by měla znít: „Proč se Java nepoužívá startupy nebo pro malé projekty?). Java určitě se používá pro„ moderní webové aplikace “. Ve společnosti Google , Java se používá pro backend pro mnoho služeb a uzavření kompilované JS nebo GWT se používá pro frontend. Problém je jeden z rychlosti proti měřítku. Startups se musí dostat na minimum životaschopného produktu. Jsou to obvykle malé týmy 1-3 inženýrů a oceňují rychlost iterace nad výkonem nebo udržovatelností. Běh proti problémům škálovatelnosti nebo problémům s udržováním kódů týmu je problém, který byste chtěli mít, tj. V době, kdy dosáhnout této fáze, je to znamení, že vaše počáteční implementace vám pomohla při počátečním náporu získání zákazníků nebo investic. V tuto chvíli si můžete dovolit přepsat aplikaci.

Společnost jako Google si může dovolit luxus stavebních věcí pro škálování předem, i když mohou ztrácet čas implementací škálování na něco, co by nezískalo žádné uživatele, protože mohou absorbovat ztrátu.

Alespoň, to je můj názor, že mnoho mnoha "cool", "hip", "moderních" společností vytváří malé aplikace s malými týmy, kde iterační rychlost a jednoduchost jsou největší požadavky.

9
cromwellian

Protože jste zmínili vývoj webových aplikací a Java, mnoho lidí má tendenci zapomenout, že na začátku pomocí Java applety ve webovém prohlížeči se neprováděly dobře, nejen to, ale „karanténa“ appletů nebyla úplně byly vyvinuty a vyskytly se bezpečnostní problémy s aplikací Java Applety mohly běžet v prohlížeči a přistupovat k datům místního počítače (tzv. problém na straně klienta). Jistě, že Java byl solidní v backendových a samostatných aplikacích, ale myslím si, že přiřadit Java jazyk k _ appletům Java (spuštěných v prohlížeči) spolu trochu zašroubovat některá vnímání Java jako komponenty pro vývoj webu. Nemyslím si, že se z toho někdy vzpamatovali.

9
LocoTx

Jednoduchá odpověď: křivka učení k produktivitě základny.

Systémy založené na rámci, jako je RoR, mají tendenci vkládat „kouzlo“ do jazyka/syntaxe. Je velmi snadné navýšit základní syntaxi RoR a dostat aplikaci nahoru a dolů.

Java byla nejprve jazykem a nástroje a rámce se ukázaly později. Takže se musíte nejprve učit Java, a pak se musíte naučit jaro, grily nebo své super IDE atd. Oblíbený příklad Ruby, který nevyžaduje setry a getery. Faktem je, Java IDEs se zbavily i ručního kódování ... ale stále je ve vašem zdroji. Výhodou tohoto přístupu je, že pod rámcem existuje jazyk, který je konzistentní se kterým mohou všichni vývojáři Java) pracovat.

Tato výhoda je pochybná pro malé startupy, kde je čas nezbytný. Obvykle dělají jen velmi málo, že by nemohli dělat s rámcem mimo krabici. Mohou tak chytit svůj systém výběru RAD) a druhý den nechat aplikaci zveřejnit.

Ale když se podíváte na Facebook a Twitter, jak se rozšiřovali, našli věci, které nemohly zvládnout rámcové rámečky, a tak museli použít technologie nižší úrovně.

Tato svatá válka, kterou vývojáři rámců mají, že dokážou dělat cokoli rychleji, je falešná, mohou dělat hodně toho, co potřebují, jednodušší a s méně křivkou učení. A pro spoustu věcí je to „dost dobré“. Použijte, co je pro problém správné.

7
Lucas McGregor

Tradiční webové aplikace v Javě, i když jsou dobře strukturované, nejsou příliš „rychle se rozvíjející“. Přestože jsem psal pouze jednu plnou webovou aplikaci (Java/Tomcat/Struts), bylo to velmi vybíravé, ladění trvalo déle, než se očekávalo, a bylo obecně bolestivé při implementaci vrstvy obchodní logiky. V potenciální obraně Java to byla jediná webová aplikace, kterou jsem napsal v Java (i když jsem zvyklý na programování aplikací na systémové úrovni v Javě), a věřím, že bych mohl napsat jinou webovou aplikaci o něco rychleji podruhé.

Poté jsem také psal aplikace v PHP a C # a oni prostě pracují lépe a jsou mnohem odpouštějící než Java. Více než to, Ruby on Rails byl napsán speciálně pro rychlý vývoj aplikací, který, jak řekl Robbie, umožňuje snadný přístup CRUD k databázím. Problém je v tom, že většina webových stránek, které budete vyvíjet samostatně, nepotřebuje úroveň přizpůsobení, kterou Java nabízí (a vyžaduje provedení). Kromě toho musí být každý objekt připojení DB napsán ručně a není tak snadné šablonyizovat. Může existovat lepší rámec, zejména ten, který využívá výhod nové funkce dynamické jazykové podpory jazyka Java 7 , ale výzkum jsem zatím neudělal.

7
Brian

Google App Engine podporuje Javu, takže můžete psát celou webovou aplikaci v Javě pomocí Eclipse jako IDE a implementačního rozhraní) s přiměřeně zdokumentovaným Google API - takže bych neřekl nepoužívá se nebo není použitelný.

6
Paul

Závisí na tom, jak definujete „moderní vývoj webových aplikací“. Pokud mluvíte o spuštění, rychlých obrátkových webech, budete muset zvážit jazyky a rámce určené pro tento účel. Pokud hledáte stabilní, škálovatelný vývoj webových aplikací na podnikové úrovni, hledáte jazyky a rámce, které tyto ideály podporují. V mé knize jsou to dva velmi odlišné cíle. RoR, Groovy, atd., Jsou dobré pro první a Java je vhodnější obecně pro druhé).

6
cdkMoose

Ve startu, pro který pracuji, jsme se rozhodli implementovat naše API jak Java, tak JRuby), protože se vzájemně doplňují.

Pro infrastrukturu, distribuci procesů a komunikaci využíváme robustnost Java, zatímco pro skutečnou implementaci koncových bodů API jsme si vybrali JRuby, protože všechna volání zahrnují JSON a dává mnohem větší smysl manipulovat s volně zadanou reprezentací (JSON) pomocí volně -typový jazyk (Ruby).

Pokud vidíme, že se jedna z našich tříd JRuby stává překážkou, jednoduše ji znovu implementujeme přímo do Java (v podstatě překlad řádek po řádku)). To se může stát docela často u tříd, které musí udělat spoustu výpočtů a v této souvislosti se JRuby chová podobně jako prototypovací jazyk.

Implementovali jsme vlastní dynamický zavaděč tříd, což znamená, že můžeme změnit Java třídy za běhu bez restartování serveru) a jsme s výběrem velmi spokojeni. Takže „musíte kompilovat a restartovat pokaždé “argument nemá příliš velkou váhu.

Klíčem je vyhnout se všem Java EE věci - EE - je to obrovské a těžkopádné a anti-agilní).

5
David Semeria

Pořád mám pocit, že Java se používá v mnoha vývojových programech pro web.) Obvykle se však jedná o vývoj zaměřený více na podnikání, ne-hlavně-tech-velké společnosti, který obvykle jsou méně otevřené než nové startupy, které musejí získat nějakou trakci a propagovat svou vlastní práci, stejně jako větší zájem o technologii. Takže i když se používá na mnoha firemních webových stránkách, pravděpodobně to nikdy nevíte, protože nebude se opravdu starat veřejně vyprávět o jejich technologickém zásobníku.

To řekl, komentovat všechny původní otázky ...

Je to slabost jazyka? Ve srovnání s jinými jazyky, jako Python nebo Ruby, Java je podrobný a má tendenci potřebovat více kódu, aby dělal podobné věci. Ale nejedná se pouze o schopnost jazyka, ale také okolní komunitu a druh vývojářů, kteří tyto nástroje používají. Takže většina modulů a nástrojů na Pythonu jsou Ruby, PHP atd. otevřeným zdrojovým kódem a je snazší je najít než ve světě Java), protože tento je více zaměřen na poskytování (a nabíjení) služeb. Například = Ruby je opravdu zaměřena na vývoj webových aplikací, takže každý vývojář, který je schopen používat Ruby bude vědět o problémech a dostupných nástrojích pro webový projekt.) nemusí nutně platit pro vývojáře Java), kteří mohli pracovat na jiných druzích systémů, jako jsou systémy hlášení. Samozřejmě, každý dobrý vývojář ho dohoní, ale vnímá se, že průměr = Java vývojář Java se obává l vydělávat nové technologie a nové jazyky.

Je to nespravedlivý stereotyp Java), protože je to tak dlouho (je nespravedlivě spojeno s jeho staršími technologiemi a nedostává uznání za jeho " moderní "schopnosti"? Java není opravdu tak stará a je spravedlivá, výrazně se zlepšila. Byla to skvělá a relevantní platforma asi 10 let ale od té doby existovaly nové platformy s novými problémy, jako Ruby na Rails.) Hlavní sektor Java byl hlavně firemní svět, s různými problémy, takže lidé hledající nové projekty mimo to, kteří hledali různé nástroje. Také hlavní výhoda Java design, multiplatforma) není dnes tak relevantní, jako to bylo předtím.

Je negativní stereotyp vývojářů Java vývojáři příliš silný?) (Java už prostě není „cool“) nějaká pravda v tom. Java stále je jazyk, který se naučí „získat práci“. Takže, pokud vám to záleží, ale jen se chcete něco naučit, jak vydělat peníze, budete konec učení trochu Java a nezajímá se znovu o zlepšení. Opět platí, že je hodně o vnímání a viditelnosti. Existuje spousta skvělých Java vývojářů, kteří jsou kódování bez sdílení svých znalostí, zatímco existuje spousta vývojářů PHP vývojáři, možná ne tak dobří), kteří píší blogy a spolupracují na otevřeném zdroji. To vede k domněnce, že PHP jsou lepší než Java ti, protože o nich máte určitou zpětnou vazbu).

Jsou aplikace napsané v jiných jazycích opravdu rychlejší, snadněji udržovatelné a fungují lépe? Řekl bych, že je rychlejší vytvářet. Principy jazyků jako PHP, Python nebo Ruby) je činí docela dobrými pro generování softwaru, který se může neustále měnit. Např. Dynamické psaní usnadňuje změnu rozhraní. V Java s dobře definovaným rozhraním je důležité, což vede ke stabilnějším (a obtížně měnitelným) rozhraním. To je velmi důležité v novém spuštění, jehož hlavním problémem je získat produkt před docházejí vám peníze. Co se týče výkonu, je velmi snadné nepochopit potřeby a pokusit se použít magické triky k dosažení požadovaného výkonu, například „Java je rychlejší než Ruby. Období "nebo" MongoDB je webové měřítko ". Realita je obtížnější než než.

Je Java) používají pouze velké společnosti, které jsou příliš pomalé na to, aby se přizpůsobily novému jazyku? Určitě, již mají stávající tým vývojářů Java vývojáři ve společnosti, usnadňuje používání stejného jazyka pro nové projekty. Toto je vnímáno jako „bezpečná sázka“, zejména pokud jádrem společnosti není technologie Ale přesto, Java není používán POUZE u velkých společností), stále existuje spousta startupů, které používají Java pro skvělé věci (například - FightMyMonster nebo Swrve používá Java značně), ale řekl bych, že obecnou tendencí ve spouštěcí scéně je používání jiných jazyků. je také způsob, jak přimět lidi, protože většina lidí bude více vzrušující pro práci s Ruby, Python nebo PHP, vnímané jako více „přátelské“ a „zábavnější“ jazyky než pro práci s Java.

5
Khelben

To je pravda, ale ne kvůli Java a jeho ekosystému. Je to kvůli lidem, kteří při použití Java) mají tendenci vytvářet velké nepořádky a silné ohavnosti.

Existuje dostatek rámců (jaro-mvc, grály, hry atd.), Které vám umožňují rychle stavět věci. Skutečnost, že lidé nadměrně vzdělávají své systémy, je problém, který přichází se zvýšenými znalostmi, které lidé získají, když pracují s ekosystémem Java) - znáte mnohem více věcí a máte je k dispozici (existují nástroje) pro všechno) a „všechno vypadá jako hřebík“.

Pokud jste „hacknuti“, můžete s Java jako v jiných jazycích) dělat totéž, a tady je studie, která naznačuje, že:

Studie 49 programátorů: statický typ systému neměl žádný vliv na dobu vývoje ... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf

5
Bozho

K tomu, co už bylo řečeno, ještě něco přidám, myslím, že hodně má co do činění s tím, jak rychle můžete přejít od ničeho (doslova) k funkční webové aplikaci.

Pokud je vše, co máte dnes, nápad, jít od místa, kde se nyní chystáte psát svou webovou aplikaci, je téměř stejně snadné jako pád, ať už si vyberete poskytovatele hostingu nebo vlastní infrastrukturu (jako obrázek EC2). Výběr jazyka Java je podle mých zkušeností obvykle více práce a často i dražší.

Pokud navíc používáte Linux a PHP/Python/Ruby, nástroje a platforma jsou bezplatné a jsou navrženy tak, aby se vzájemně podporovaly. U Java se někdy zdá, že se oba světy (OS a Java) někdy nezdají být v souladu navzájem.

3
Matt Ryan

Kdo říká, že tomu tak není?

Jarní MVC + Spring Data JPA nebo Mongo + Thymeleaf pro templating + coffee-maven-plugin pro Coffee to JS transpiling a máte dobré jít.

3
Martin Spa

Mnozí by mohli spojovat Java a vývoj webových aplikací) s hrůzami J2EE, které ve spojení s obludnými aplikačními servery J2EE z velkých modrých a červených korporací představovaly týdny práce před tím, než byl základní „Hello World“ online. .

Je pravda, že nedávné specifikace a implementace JEE mají menší váhu, ale přesto bych si trikrát myslel, než navrhnu něco podobného pro projekt rychlého vývoje s krátkým cyklem.

Toto je stále standardní způsob vývoje webových aplikací v Javě. Alternativy, z nichž mnohé jsou uvedeny v jiných odpovědích, ukazují smíšenější a matoucí obraz s příliš mnoha možnostmi.

Jiné jazyky zobrazují místo tohoto množství jediné řešení na klíč. Díky tomu se tato volba jeví vhodnější, pokud máte na smažení důležitější ryby.

3
Asgeir S. Nilsen

Myslím, že se používá mnohem více, než byste si mysleli - použití je těsně pod vodoryskou. Existuje mnoho, mnoho Ruby on Rails obalů kolem silných, efektních Java služeb). Zejména když začnete něco řešit blížící se k velkým datům.

2
Wyatt Barnett

Java byla v pohodě, Java je v pohodě a Java bude v pohodě v budoucnu.) Vyvíjím webovou aplikaci používající Javu.

Hlavním problémem s Java je to, že tým středně velkých týmů má 7–10 lidí, aby viděl výsledky implementace. Vývojáři back-endu musí mít znalosti aplikační architektury od ORM po Application framework to prezentační vrstva Příliš mnoho možností pro vývojáře na stole, a to vyvolává otázky, je to dobrý nápad použít ORM nebo ne? Který rámec ORM použít? Který aplikační rámec použít? Jak implementovat frontend? Všechny to dělá vývojáře bojovat a dělá kombinace nekonečné od koncového uživatele, aby si vybrali tuto technologii s rámcem, který vývojáři nejsou obeznámeni. Totéž platí s IDE pluginy; příliš mnoho možností, hodně) času stráveného instalací, konfigurací a testováním, pokud tato verze pluginu pracuje s touto verzí IDE atd.) Poslední věcí je hosting; mnoho vyvinutých Java Aplikace nechodí na veřejnost, protože neexistuje žádný řádný webhosting pro Java webové aplikace, gett Jeden VPS za 80 $/měsíc není pro příliš mnoho vývojářů volbou a většina aplikací potřebuje více než jednu VPS.

2
newphoenix

Pro tvorbu webových aplikací používám hodně Java. Takže pokud jde o * jazykový itel * f, najdu pouze jeden (ale velký) problém - nedostatek multiline podpory. Díky tomu je tisk/šablonování v čistě Java kód velmi nečitelný).

Skutečným problémem je však nedostatek dobrých webových rámců. Pracoval jsem s mnoha řešeními a žádné z nich jsem nemohl pojmenovat dobře ani uspokojivě.

Většina z nich je ve skutečnosti programování XML. V JSF vytvoříte tuny XML, a pokud chcete změnit nějaký obecný rys, jako např. Změnit označení na začátek textových polí, při provádění stejné změny na více místech. Ano, máte zahrnuty, ale porovnejte je se zahrnutými z PHP ...

Navíc nový JSF obsahuje "extra" funkce, které byly známy rámcům JavaScript před lety ...

ZK je o něco lepší, protože umožňuje vytvářet webové prvky v kódu Java), což usnadňuje úpravy (pokud používáte OOP správně - zdědění atd.). Avšak tento Java kód je spuštěn na straně serveru, což je velký problém s výkonem - každé kliknutí bude způsobit odeslání balíčku na server.

GWT je nejlepší webový rámec, se kterým jsem pracoval. Umožňuje programování objektů ve webovém designu. Každý prvek na obrazovce je reprezentován objektem Java, což vám dává plnou flexibilitu, ale ... Čas kompilace je velmi dlouhý a vygenerovaný Javascript není ani zdaleka optimální, jednoduše proto, že GWT není Plně nevyužívá možnosti JavaScriptu (žádná podpora reflexe, alespoň ve verzi, kterou jsem používal, a fatální implementace HashMap).

Můžete použít šablony, jako je Rychlost, ale jak je uvedeno výše, jedná se o verzi šablon pro chudé muže, kterou poskytují takové jazyky, jako je PHP.

Takže to není nenávist vůči Java, ale nedostatek podpory pro psaní webových aplikací, které člověk získá při používání PHP, Python atd. ...

1
Danubian Sailor

Problém s Java) je, že tento jazyk se učí ve škole, takže je to jazyk nejznámější noví programátoři. Takže pokud se chcete odlišit od masy, musíte se naučit nový jazyk, Java je jazykem všech).

Druhým důvodem je to, že ve škole nebo ve velkých společnostech, když chcete vytvořit webovou aplikaci, vám učitelé nebo lidé, kteří již pracují, dávají tuny rámců Java) rámců, které vám pomohou rychleji vytvářet tuto aplikaci. Ale ve skutečnosti tímto způsobem vytvoříte webovou aplikaci, aniž byste skutečně rozuměli webu (HTTP, HTML, CSS, Javascript atd.). Tento trend je méně viditelný u jiných jazyků, jako je RoR nebo Python, vývojáři používající tyto jazyky mají lepší porozumění webu.

Takže statups, kteří chtějí stavět moderní webové aplikace, raději používají RoR, PHP nebo Python), aby přilákali dobré vývojáře webu, ty, kteří rozumí webu a nejen to programovací jazyk.

1
Alexandre Vivien

Pokud máte na mysli „moderní“, máte na mysli populární (jak získat co nejvíce tisku), je důvod Java není používán) velmi jednoduchý - protože všechny „skvělé děti“ používají Ruby (nebo Python nebo Clojure nebo Scala, nebo cokoli, co je v dnešní době „cool“).

To má hlubší význam, tito lidé, kteří používají Ruby nebo Python) k psaní svých „moderních“ webových aplikací, jsou obvykle opravdu skvělými inovátory. láska řeší nepříjemné problémy jednoduchým a efektivním způsobem a zároveň šetří čas a mozkovou energii, protože to může dělat. Někteří by mohli říci, že to jsou vlastnosti dobrých programátorů.

Tito lidé obvykle také vytvářejí nejpřísnější tisk kolem svých projektů, což velké společnosti zřídka dělají. Ať už je to tím, že dělá spoustu open-source, psaní blogů, nebo cokoli.

Gravitační tah těchto lidí do světa dynamických jazyků, kde se jim nabízejí jednodušší/menší/rychlejší/štíhlejší způsoby řešení problémů, je proto snadno pochopitelný. Bohužel to znamená, že stejní lidé, kteří byli skvělí Java vývojáři, Java, zrají a opouštějí rozjetý vůz Java), protože je to nepříjemné a pro ně těžké) vyřešit stejné problémy.

Pokud vytváříte jednoduchou webovou aplikaci s rámcem MVC X, vyžaduje zápis/úpravu pouhých 100 řádků kódu v Rails/Django, a naopak, vyžaduje to 10 000 řádků kódu v Java) to samé - je velmi zřejmé, proč se to může zdát nepříjemné.

Pokud jde o tvé prohlášení „Neviděl jsem nic kritického„ chybějícího “v Javě, což mi bránilo ve vytváření stejné aplikace.“ Otázka zní - pokud jste měli stejné zkušenosti v Rails/Django/Whatever ... jak by se tyto dvě aplikace Java a non-Java vzájemně porovnávaly, měřily čas a úsilí) a další metriky, se kterými se můžete setkat.

1
Evgeny

Zajímavou odpověď dává Dries Buytaert, který založil drupal. Přestože se jeho doktorát zaměřil na Javu, vybral si php pro drupal a nelitoval tak. Můžete si ji přečíst (a některé z jeho komentářů) zde: http://buytaert.net/why-php-and-not-Java

Bylo by velmi obtížné získat kritickou masu, pokud Drupal byl napsán v Javě).

0
johanvdw