Ááá

Další web používající WordPress

Srp

31

Javou PHP nenahradíš

Tak jsem dal šanci Javě a nejdřív se mi to hodně líbilo. Nadchlo mě i IDE NetBeans, to se s ničím pro PHP nedá srovnat…

Současná Java 6 je jenom taková vylepšená pětka. Java 5 byla přelomová verze, která přinesla generiky a anotace. Díky anotacím už není nutné ke každému projektu udržovat miliony XML souborů a generiky zase odstranily mnoho problémů statického typování.

Taky jsem si trochu ujasnil termíny jako „aplikační server“ nebo „J2EE aplikační server“, resp. „Java EE aplikační server“. Dost mi pomohl článek od Dagiho: Třívrstvá architektura v kostce I.

Zatímco za aplikační server lze považovat klidně i LAMP, tak Java EE aplikační server je takový aplikační server, který splňuje komplet některou Java EE specifikaci. Pro většinu projektů je to čirá zbytečnost, ale velké firmy na to slyší. Když už mají investovat miliony do nějaké technologie, tak pochopitelně raději volí software IBM s certifikací od Sunu, než software od jakési Apache Foundation s licencí „AS-IS, NO WARRANTY“.

Já bych využil jenom několik málo komponent Javy EE, jako základ bych měl Tomcat + pár dalších open source knihoven. Java je ohromná stavebnice, to se mi líbí.

Jenže…

Už jsem rozečetl i jeden tutoriál pro Javu EE, ale poslední tři týdny se skoro nedokážu přimět k tomu sednout. Proč? To o těch hostinzích mě připravilo o iluze a já si pomalu uvědomuju, že hostovat na sdíleném Tomcatu nechci a platit si VPS zatím taky ne.

Zkrátka že Java nemůže konkurovat PHP na poli nízkonákladových webových projektů. Nic pro nás hobbíky.

O návratu k PHP jsem uvažoval jenom krátkou chvíli. Nepouští mě strach z toho, že budu všechno pracně upravovat, až vyjde další minor verze (PHP 5.3) a celé psát odznova, až vyjde další major verze (PHP 6). Vím jenom o dvou aplikacích, které od PHP3 po PHP5 přežily bez kompletního přepsání. Jinak se všechno v PHP píše pořád odznova…

Kontumačně se dostávám k ASP.NET. Moc nadšený z toho zatím nejsem, ale horší než PHP to snad být nemůže. ;-)

This entry was posted by LLook on 14:49, Srp 31st 2008 and filed in Nezařazené.

Komentáře můžete sledovat přes RSS 2.0 kanál.

Komentářů už je 17. :-) to “Javou PHP nenahradíš”

  1. AvatarHrach
    Posted: Srp 31st, 2008 at 16.26
    1

    no, mam takový pocit, že .net bude to samé jak java;)

  2. AvatarLLook
    Posted: Srp 31st, 2008 at 17.25
    2
    Author Comment

    Doufám, že .NET bude to samé jak Java, až na jednu drobnost.

    Od Javy mě totiž odradilo pouze to, že nelze pořádně zprovoznit sdílený hosting. Že všechny sdílené hostingy s Javou prostě sází na to, že u nich budou hostovat jenom slušně napsané aplikace, které neplýtvají zdroji. Po všech ostatních stránkách mi Java vyhovuje.

    ASP.NET tyto věci nějak řešené má. Microsoft prý dokonce pořádal workshopy, kde webhostery učili nakonfigurovat IIS pro sdílený provoz. Pro ASP.NET je už i pár freehostingů a docela spolehlivě fungují, to by bez pořádného zabezpečení nebylo možné.

    Snad se v tomhle nepletu, k PHP se vracet nechci.

  3. AvatarOndra Žižka
    Posted: Zář 1st, 2008 at 1.16
    3

    Rád bych podotkl, že tě nezklamala Java samotná, ale nedostatek schopných a levných java-hostingových firem.

    Já osobně se Javy nevzdávám, ba naopak – teď v ní dělám první větší komerční projekt, který sám vedu (tj. jsem architekt, nikoliv webař), a zatím si jen chrochtám blahem. Přesně jak píšeš – velká stavebnice, a těch dílků k dispozici :-)

    Je ale pravda, že sdílený hosting jsem zatím nehledal – moje aplikace má kam jít. Ovšem zanedlouho bych teoreticky měl mít tohle v malíku, protože také nastupuji do jedné firmy, která se zabývá vývojem aplikačního serveru. Tak pak třeba napíšu nějaký návod na sdílený hosting :-)

    Co se týká těch zdrojů a slušných aplikací – tak nevím, jestli jste něco nepřehlédli, ale v Javě se dá nabeton také v klidu odstřelit nenažraná aplikace – zatím jsem to tedy řešit nemusel, ale když dojde paměť stanovená limitem, aplikace vyhodí runtime exception, a taktéž jsem již četl o démonu, který hlídá odezvu aplikace (jestli třeba nezpracovává požadavek minutu) a při nastavených podmínkách tento požadavek „odstřelí“ – do vlákna je opět „vtlučena“ runtime exception (rt ex – tj. že se nemusí nutně ošetřovat). Myslím, že to umí GlassFish 3 a JBoss 5 (ne-li dřívější).

    Jak říkám, až o tom budu vědět víc, někam to sepíšu – ať je v ČR trochu víc Javistů než ti, co je firmy hned po škole rozeberou za těžký love – kdo má pak shánět spolupracovníky na vlastní projekty :-)

  4. AvatarOndra Žižka
    Posted: Zář 1st, 2008 at 1.17
    4

    A snad ještě jedna věc – už jsem to tu asi propagoval, ale nabízím s kamarádem levný J2EE hosting. Pro hobbistu asi jak dělané – protože bys měl k dispozici celý vlastní Tomcat přes Apache proxy. Kdyžtak se ozvi na uvedený kontakt.

  5. AvatarLLook
    Posted: Zář 1st, 2008 at 14.32
    5
    Author Comment

    O tvém hostingu vím, ale do toho se mi nechce. Byl bych na něm moc závislý a když bych s něčím nebyl spokojený, bylo by příliš obtížné přejít jinam.

    Měl bych pak zase na výběr jenom levné programy od nezkušených firmiček (G-Hosting nebo Savvy), nebo drahé programy od zkušených firem. Na poli ASP.NET je situace o poznání lepší.

    V tomto ohledu je vůbec nejlepší PHP – levných a kvalitních hostingů (resp. tak kvalitních, jak jen PHP umožňuje) je přehršel. Ale PHP jsem už zavrhl z jiných důvodů.

    Vím, že omezení přístupu ke zdrojům lze velmi komfortně zařídit na úrovni procesů. Když každá aplikace má své vlastní JVM. O možnostech omezení na úrovni servlet contextu, nebo ještě lépe na úrovni vláken obsluhujících jednotlivé požadavky, jsem zkoušel něco najít a nenašel vůbec nic.

    Čím to ještě může být, že levných a schopných .NET hostingových firem je narozdíl od Javy dostatek?

  6. AvatarPetr Stříbný
    Posted: Zář 1st, 2008 at 16.20
    6

    Pro ASP.NET se dají sehnat cenově dostupné (popř. i free) hostingy. Pokud se někdy budeš .NETem na webu zabývat, doporučuju se podívat spíš na nějaký MVC framework (ASP.NET MVC či MonoRail), protože původní koncept WebForms není úplně ideální (i když měl spoustu pěkných myšlenek). C# je krásný jazyk a Visual Studio jako IDE patří mezi špičku.

  7. AvatarOndra Žižka
    Posted: Zář 5th, 2008 at 21.25
    7

    Ad hosting – jasně, to je pravda… ale já říkám – jen houšť a větší kapky :-)
    Proč je víc .Net hostingů netuším. Asi proto, že když už někdo dělá web Javě, tak to často bývá větší aplikace (z konvence výběru), kterou chce mít zcela pod kontrolou, takže volí vlastní hosting. Snad se situace někdy vyrovná.

    Ad omezení – jak jsem psal – dejte mi měsíc dva a vystřihnu na to tutoriál :-) Vždyť je to jeden z nejdůležitějších aspektů sdíleného hostingu.

  8. Avatarv6ak
    Posted: Zář 6th, 2008 at 14.31
    8

    Stejně je mi záhadou, proč není možnost spustit Javový server s oezeními jako je to u PHP. Vždyť přece i Java umí běžet v sandboxu, jako jsme viděli u J2ME nebo apletů (appletů?).

  9. AvatarOndra Žižka
    Posted: Zář 7th, 2008 at 23.49
    9

    Která konkrétní omezení máš na mysli?

  10. Avatarv6ak
    Posted: Zář 8th, 2008 at 6.50
    10

    [9] V PHP je možnost použít safe_mode, open_basedir a další, což umožňuje oddělit jednotlivé hostingové prostory od sebe. Pak je tu ještě omezení paměti a doby běhu skriptu.
    // možná je tam místo teček pomlčka, ale spíš ne.

  11. AvatarLLook
    Posted: Zář 8th, 2008 at 15.57
    11
    Author Comment

    Většina těch věcí by neměla být problém, stejně jako u appletů se o to postará SecurityManager. Co jsem tak vyrozuměl, tak největší problém je to omezení paměti.

  12. Avatarv6ak
    Posted: Zář 9th, 2008 at 13.42
    12

    [11] To zní jako špatný vtip – Wireless Toolkit Emulator umí nastavovat i limit paměti.

  13. AvatarLLook
    Posted: Zář 9th, 2008 at 15.30
    13
    Author Comment

    [12] Ten emulátor se pouští v samostatném procesu – spustí se nová instance JVM jenom pro ten midlet. Když si v KToolbaru otevřu nějaký vzorový projekt a dám ho spustit, tak se mi ve správci úloh objeví nový proces java.exe…

    Omezit paměť pro celou JVM je snadné, je na to i nějaká commandline volba. Pro sdílený webserver z toho plynou tři možnosti:

    • a) Samostatné JVM pro každý HTTP požadavek. Blbost.
    • b) Samostatné JVM pro každého uživatele. Takové hostingové programy existují („privátní JVM“), ale s tím je zase jiný problém: Náklady jsou srovnatelné s VPS.
    • c) Jedno JVM pro všechny a risknout to. To jsou levné Java hostingy, u kterých je jen otázkou času, kdy některého spoluuživatele napadne generovat náhledy ke svým 12 MPix fotkám (jeden z nejčastějších dotazů v PHP fórech – jak obejít memory limit při zmenšování obrázků :-) ).

    Už jsem tu jednou odkazoval na Dagiho: http://www.sweb.cz/…archive.html#…
    Sice je to starý článek, ale nikde jsem nenašel známky toho, že by se na tom něco změnilo, takže z toho vycházím.

  14. Avatarv6ak
    Posted: Zář 9th, 2008 at 18.41
    14

    [13] Nebo klasická podmínka „kdo bude přetěžovat server, dostane za uši“…

  15. AvatarLLook
    Posted: Zář 10th, 2008 at 16.06
    15
    Author Comment

    [14] Tahle podmínka je samozřejmá pro všechny možnosti sdíleného hostingu. Vlastně pro jakékoli sdílení čehokoli.

    Pokud má být hosting levný, pak je nutné podobné situace co nejvíc omezit. Kdyby teď třeba WebZdarma zrušil memory_limit s tím, že kdo bude přetěžovat, dostane za uši, to by asi moc nefungovalo…

  16. Avatarv6ak
    Posted: Zář 12th, 2008 at 7.02
    16

    [15] Jo, to je pravda.
    BTW: nedávno jsem se díval na specifikaci Sony Ericssonů. Bylo to kvůli něčemu úplně jinému, ale přečetl jsem si i něco o multitaskingu (ne paralelní vlákna, ale paralelní aplikace) v JP7 (Java Platform 7). A taky tam bylo ve zdrojích „kdo dřív přijde, ten dřív mele“. Otázka zůstává, zda to nejde měřit. Nezkoušel jsem to, mám mobil s JP6. Ale třeba půjde měřit nároky jednotlivých servletů a stránek a automaticky je sestřelovat… Otázkou zůstává, jaké by mělo nároky měření.

  17. AvatarAnonymní
    Posted: Pro 20th, 2008 at 20.39
    17

    hehe

SexyComments by BorkWeb

Leave a Reply


© Ááá * WordPress * LoseMyMind * Feed feed