Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: xwinus 31. 01. 2013, 01:20:37
-
Zdravím,
z určitých důvodů potřebuji napsat vlastní CMS, které by bylo klientům poskytováno ne jako produkt, ale jako služba (aplikační hosting) a běželo by na našem na vlastním železe. Váhám mezi Javou a PHP, PHP je super pro svojí jednoduchost, nenáročnost a přenositelnost, nicméně s Javou jsem mnohem větší kamarád a osobně mi víc sedne. Jde mi tu o otázky jako celková rychlost aplikace, náročnost na CPU/paměť, pozdější zásahy do kódů apod. Máte někdo vlastní zkušenosti?
Díky
-
Rob v tom, čo ti viac sadne. Rýchlosť, CPU, pamäť dnes nič neznamenajú, aj v tom najlepšom jazyku sa dá totálne sprasiť kód a nakódiť nezmyselnú aplikáciu, a platí to aj opačne: dobrý program sa dá napísať aj v assembleri.
Ak to bude aplikačný server a zákazníci nebudú písať časti programu, tak je im fuk na čom to beží.
Železo je dnes lacné, pamäť nestojí takmer nič, takže výkon by som riešil až na ďalšom mieste.
-
Podla mna treba zvazit aj predpokladanu "velkost" projektu a pocet ludi, ktori budu na tom robit. S javou na webe nemam velke skusenosti ale vidim to takto:
Java:
+ lepsia kontrola kodu (typovost, "povinne" vynimky, ...)
+ lepsie moznosti debugovania
- v porovnani s PHP zlozity kod (napr. hashtable vs asoc. pole v PHP)
- drahy programatory (ak budes potrebovat dalsich ludi)
- zlozitejsia zmena v kode beziacej aplikacie (napr fixovanie bugov v beziacej aplikacii)
PHP:
+ vacsinou staci menej kodu na rovnaku funkcionalitu
+ beziaca apliakcia sa v principe sklada len zo skriptov - pri fixovani staci vymenit skript bez nutnosti restartovat aplikaciu atd...
+ lacnejsi programatory
- vacsia nachylnost na chyby v programe
- broblematickejsie debugovanie
Zhrnutie:
Nemam vela skusenosti s Javou, takze ma mozno niekto opravi ale v principe:
Ak mas skusenosti s Javou a vyvoj bude hlavne na tebe tak to rob v Jave. Uz pri navrhu projektu by bolo dobre, keby si poznal vlastnosti jazyka, v ktorom to budes robit.
Ak to bude pomerne komplikovany projekt (co z toho co pises asi bude) rob to v Jave.
Ak budes na programovanie sam a tlaci ta cas zvol asi radsej PHP + nejaky vhodny framework menej sa narobis aj ked budes musiet obetovat nejaky cas na ucenie novych veci.
-
Sám bych to udělal v PHP, ale na tvém místě bych zvolil Javu, protože k ní máš blíž.
-
Není to o kódu ale o návrhu,
pokud zprasíš návrh, tak i modul do apache v čistém C bude pomalý. pokud si dáš na návrhu záležet a použiješ v něm vlastní bohaté zkusenosti které nikde nenačteš, tak je úplné jedno v čem to uděláš.
jinak bacha na bezpečnost, v novém systému se díry tvoří samy, snadno a rychle ;-)
A ještě k těm jazykům, mě osobně se poslední dobou začíná líbit python :-)
-
No záleží na tom, jestli si kamarád s Javou jako jazykem, nebo i přidruženými webovými frameworky, jak např. Spring, JBoss Seam, nebo čisté servlety, JSF,.... Jestli totiž jen s jazykem, tak ty frameworky nejsou žádná sranda a rozhodně bude jednodušší to udělat v php a třeba Nette nebo Zendu.
-
A co např rychlost celé aplikace a požadavky na zdroje serveru? Je pravda že (samozřejmě za předpokladu že kód není zbastlený) je Java u větších projektů rychlejší než PHP? Předpokládám, že Java asi schroustá víc času procesoru a paměti. (I tohle je jedna z klíčových otázek, protože provoz serverů taky něco stojí)
-
je Java u větších projektů rychlejší než PHP?
U mna na serveri to na par projektoch plati (velmi siroky odhad, mozno plati len u mna - spotreba CPU je u PHP 2-3 nasobna; naopak spotreba RAM je u PHP cca 1/10 zo spotreby Javy).
Celkovo ide len o malu cast vykonu; limitujucim prvkom nie je samotna aplikacia, ale databaza.
-
J2EE je hodně sprasená záležitost.
Java je hodně dobrá, ale jen než se naučíš dobře s nějakým Java frameworkem a všechny čičmunidčky okolo, budeš to mít v PHP hotové. Já bych se vykašlal na Java i PHP a zkusil RoR.
-
J2EE je hodně sprasená záležitost
S tim musim souhlasit. Navic ty Java frameworky maji hodne plochou lerning-curve - tzn. strasne dlouho trva nez ten framework zacne prinaset nejaky uzitek, ze zacatku ti jen bude hazet klacky pod nohy. Nastesti uz je ale J2EE depracated a ten je to novy bajecny standart JEE, ktery uz neni tak "hrozny". Napriklad uz skoro neni potreba "programovat" v XML.
-
J2EE je hodně sprasená záležitost
S tim musim souhlasit. Navic ty Java frameworky maji hodne plochou lerning-curve - tzn. strasne dlouho trva nez ten framework zacne prinaset nejaky uzitek, ze zacatku ti jen bude hazet klacky pod nohy. Nastesti uz je ale J2EE depracated a ten je to novy bajecny standart JEE, ktery uz neni tak "hrozny". Napriklad uz skoro neni potreba "programovat" v XML.
No ono PHP je taky slušně sprasená záležitost v některých ohledech, např. OOP, nekonzistentnost názvů core funkcí apod...
-
J2EE je hodně sprasená záležitost
S tim musim souhlasit. Navic ty Java frameworky maji hodne plochou lerning-curve - tzn. strasne dlouho trva nez ten framework zacne prinaset nejaky uzitek, ze zacatku ti jen bude hazet klacky pod nohy. Nastesti uz je ale J2EE depracated a ten je to novy bajecny standart JEE, ktery uz neni tak "hrozny". Napriklad uz skoro neni potreba "programovat" v XML.
No ono PHP je taky slušně sprasená záležitost v některých ohledech, např. OOP, nekonzistentnost názvů core funkcí apod...
Jde mi o to vybrat takový jazyk a platformu, která mi nebude házet klacky pod nohy za 2 roky až do aplikace budu muset přidávat nějaké nové vlastnosti, případně něco měnit. Vím že v PHP by se to celé dalo možná napsat x-krát rychleji. Ale je stejně rychlá údržba a refactoring a přidávání nových věcí? Navíc pokud vím, nikde nemám zaručeno, že následující major verze PHP zůstanou plně kompatibilní se současnými, nebo se pletu?
-
Jde mi o to vybrat takový jazyk a platformu, která mi nebude házet klacky pod nohy za 2 roky až do aplikace budu muset přidávat nějaké nové vlastnosti, případně něco měnit.
Takže chceš RoR.
Dá se říct, že to má to nejlepší z Java i z PHP.
V PHP to můžeš začít programovat za měsíc.
V Java to můžeš začít programovat za měsíc a rok.
-
Jde mi o to vybrat takový jazyk a platformu, která mi nebude házet klacky pod nohy za 2 roky až do aplikace budu muset přidávat nějaké nové vlastnosti, případně něco měnit.
V tom pripade neni Java spatna volba. Ty si nevybiras jen jazyk, ale cely ekosystem - jazyk, framework a vyvojove prostredi. A prave pokud jde o IDE tak je Java hodne vepredu.
-
Tak tenhle fór se povedl.
-
Pokud to ma byt CMS pro patlani webu pres frontend tedy neco jako webnode, bude tam velmi vyrazny pomer read:write tak je to uplne jedno z hlediska vykonu.
Napis to relativne rychle v PHPku, udelej si tam obecny cache backend(to abys nebyl vazan na jednu vec, abys ho mohl v pripade potreby zmenit) a do nej sypej maximum mozneho. Nebudes potrebovat resit vykon(nebo zjistis ze existuje treba varnish a tim odbavis vsechny neprihlasene requesty).
Jako cache backend je vyborny treba mongo nebo memcached.
Vydal bych se rozhodne cestou nejakyho frameworku - at uz symfony nebo zend. Nema smysl psat si prihlasovani, psat si DB vrstvu...
-
Myslím, že už zmiňovaný RoR je optimální volba. Dále pak máme pár hezkých frameworků v Pythonu (i když Django je snad ještě pomalejší, než PHP...).
V PHP to samozřejmě půjde taky, jenom si ale musíš vybrat správný framework. S Javou zkušenosti nemám.
Doporučuju zlehka mrknout na Rails, Django, TurboGears, Zend a Nette a rozhodovat se pak s širším rozhledem.
-
Framework je stejně důležitý jako sám jazyk, možná že je i složitější se naučit framework než jazyk.
-
Jen tak ze zvědavosti... to je vývoj v Java EE fakt tak pomalý ve srovnání s PHP? Nevěřím že by se to pak v něčem zase nevrátilo. Osobně jsem měl tu čest pracovat na jednom poměrně rozsáhlém firemním systému v PHP a přišlo mi, že jen aby to vůbec nějak rozumně běželo, muselo to být poslepované navíc s memcached, + milion dalších věcí. Nechci vyvolávat flame, jen mě docela zajímá, v čem má PHP jako skriptovací jazyk (kromě rychlosti vývoje) přednost před komplexní platformou jakou je např Java, při tvorbě větších projektů.
-
Jen tak ze zvědavosti... to je vývoj v Java EE fakt tak pomalý ve srovnání s PHP? Nevěřím že by se to pak v něčem zase nevrátilo. Osobně jsem měl tu čest pracovat na jednom poměrně rozsáhlém firemním systému v PHP a přišlo mi, že jen aby to vůbec nějak rozumně běželo, muselo to být poslepované navíc s memcached, + milion dalších věcí. Nechci vyvolávat flame, jen mě docela zajímá, v čem má PHP jako skriptovací jazyk (kromě rychlosti vývoje) přednost před komplexní platformou jakou je např Java, při tvorbě větších projektů.
Takto se může vyjádřit jen laik... V PHP se oplatí jít do některého z kvalitních FW (Symfony, Nette). I tak to znamená, že si člověk musí některé komponenty napsat sám (většinou z důvodu specifik samotné aplikace). Nicméně pokud není vývojář dobytek (na to ti java nepomůže), tak se to jde poměrně dobře.
-
v čem má PHP jako skriptovací jazyk (kromě rychlosti vývoje) přednost před komplexní platformou jakou je např Java, při tvorbě větších projektů.
Java je nádherný a čistý jazyk, bohužel tam měli slovo lidé typu "šílený Linuxář".
Nejprve vymysleli servlety, pak zjistili, že to není ono, tak přidali JSP jako konkurenci k PHP, aby zjistili, že to není ono, tak přidali JSF, aby zjistili, že to taky není ono, aby přidali Netbeany, aby zjistili, že ve verzi 3.0 to docela jde, ale že bude lepší používat všechno naráz. V zásadě to je situace podobná Linuxu, kdy se realizuje 100+1 ptákovina. K čemu je 101 X managerů (Gnome, Unity, Kde, IceWM...)?
Skutečnost ukazuje, že megaúspěšné WIDLE používají jedno okenní rozhraní a vlastně to všem vyhovuje, stejně jako Apple. Naopak, když se v tom rozhraní udělá změna alá W8, všichni blázní. Přesto magorští Linuxáři pořd trvají na 100 rozhraních, byť ani jedno není perfektní. Jak se říká, někdy je lepší jedna krásná a hodná ženská, než jedna husná a pitomá + jedna hnusná a zlá + jedna hezká ale frigidní + jedna zlá a hysterická....
Když vývojáři přišli na to, že J2EE zčubčili, začali uvažovat nad vyčištěním a vznikem JEE a prý už to není takový hurá styl, jako předtím.
Prý to ale ještě není ono, protože se na tom bohužel podílelo spousta bláznů z minulosti, kteří nechtěli uznat, že zrovna jejich dítko stojí za ho*no a tak to zase /naštěstí v menší míře/ mrší dál.
Pak tu je ještě sraní s aplikačním kontejnerem, kdy každý umí něco jiného a ně vždy je to taková sláva.
A PHP vs JAVA?
PHP je Pepa z Horní Dolní, který si vzal červený trenky, tričko, ale nechal si gumáky a vyrazil na běh po světě.
Java je špičkový sportovec druhý Zátopek, který má na levé ruce třicetikilový krokoměr, na zádech stokilový sud s pitím, na hlavě dvousetkilovou aerodynamickou přilbu, na nohách nejlepší boty z nejmodernějšího betonu a aby se vůbec hýbal, táhne ho za sebou na laně Auto. Ano, Pepa s gumákama z Horní Dolní sice není žádný zázrak, ale doběhne kam potřebuje. Java alias Zátopek se někam dostane taky, pokud k tomu má dvousetčlenný tým, který mu pomáhá a to auto, co ho táhne na laně.
Oproti tomu zmíněná Ruby On Rails má hlavu a patu.
To je taková usměvavá Mařena v dobrých běžeckých botách, která je zvyklá běhat a toho chudáka v gumákách předběhne vždy.
-
Java:
- v porovnani s PHP zlozity kod (napr. hashtable vs asoc. pole v PHP)
Omlouvám se za lehce OT, ale co je na hashtable složitého oproti asociativnímu poli v PHP? Že místo hranatých závorek napíšu get() ?
Spíš bych naopak bil ty, co vymysleli, že není nutné rozlišovat sekvenční pole od asociativního - soudruzi sice ušetřili jedno klíčové slovo, ale donutit pak třeba kód postavený na reflection, aby serializoval prázdný hash jako {} (v případě JSON), to je nadlidský úkol.
-
Tak jsem pročetl všechny komentáře a popravdě... nevím co zvolit. Ne že bych byl PHP hater, ale zrovna dvakrát povedený jazyk to není a netvrdím, že Java je naprosto ideální jazyk. Chápu že v Javě to budeme psát třeba delší dobu, předpokládám ale že investovaný čas by se vrátil v průběhu údržby a rozšiřování aplikace. Otázka tak trochu bokem... jak jsou na tom Java hostingy v ČR? Nejde mi ani o to kolik se platí měsíčně, spíš o rychlost apod. Nějaké zkušenosti?
-
Je samozřejmostí, že Javu si budeš na svém serveru (třeba na Virtuální Privátním Serveru) hostovat sám.
Tváříš se, že o tom něco víš, ale nemám pocit, že by ti něco říkal pojem aplikační server.
Abych ti to vysvětlil, aplikace jako taková běží uvnitř aplikačního serveru.
Aplikační servery různých výrobců spolu "nejsou tak úplně kompatibilní", proto bývá přenos například z Jboss do TomCat spojený s "potřebou jistých úprav" (chachacha).
No a pokud se rozhodneš využít služeb hostingu a náhodou najdeš takový (v ČR je asi cca 5 hostingů), který používá stejný aplikační server, na kterém jsi to vyvíjel (možná 1 z těch 5-ti) a nějak je přesvědčíš, aby tě vzali jako za zákazníka (narveš jim peníze, co to jen půjde), pak budeš hezky hodnej a pěkně ticho, když to nepůjde, protože když budeš pindat, pošlou tě i s tou tvojí hajtrou pryč.
Pokud to chceš mermomocí onanovat na hostingu, tak si raději vyber aplikační server podle nějakého toho hostingu.
Jen se vyhni TomCATu, protože EJB>3 jsou docela pěkná věc.
V každém případě, pokud jsi ještě nic v J EE nenapsal, čeká tě čtení ~200 stránek dokumentace aplikačního kontejneru, studium frameworků a tak rok učení, než budeš vědět, jak se do toho pustit, tak se tu sejdeme za rok.
-
Jestli máš rozum, možná zkusíš ASP.NET MVC3 ::)
C# je vlastně okopčená Java a dá se v tom programovat s krásou a lehkostí i rychlostí podobnou PHP.
Křivka učení je o poznání strmější než u PHP (musíš si nastudovat model MVC), ale HODNĚ pěkné Hello Word uděláš za 2 měsíce a za 1/2 roku začneš kodit aplikačku.
Já se na Javu vykašlal a řekl, že nebudu v J2EE psát do doby, než to bude dávat smysl.
A jsem VELMI rád.
-
Ono se pár "hostingů" zadarmo najít dá.
Jako PaaS tu jsou minimálně Google App Engine (který ale JEE dosti specifickým způsobem mrzačí) a OpenShift od RedHatu, kde člověk dostane plnohodnotný JBoss a k tomu buď relační anebo NoSQL databázi podle výběru. Obojí je sice zadarmo jen do určité míry, na obou je celkový počet aplikací jednoho uživatele malý (< 10), GAE zároveň limituje i CPU čas a DB přístupy.
A pak je tu samozřejmě IaaS např. Amazonu, kde si člověk nainstaluje a rozchodí, co se mu zlíbí.
-
Čo takto neučiť sa rok písať CMS v Jave, neprasiť to v čistom PHP a vrhnúť sa na Nette? Strmá krivka učenia, dokumentácia (uznávam, že nie dokonalá), fórum, ochotná komunita a v neposlednom rade dostupné školenie priamo od autora:P
Ak si už niekedy niečo v PHP robil, tak za týždeň začneš písať zmienené CMS.
PS: Ako nevýhoda PHP tu bol zmieňovaný debugger - nevidím to v Nette až tak kriticky..
-
Zakladni dotaz: vis, co to je CMS, znas nejaky a dovedes si predstavit, kolik funkcionality to obsahuje? Navic podle tveho dotazu bych pochyboval i o nejakych vetsich zkusenostech a rekl bych, ze vlastni CMS = sebevrazda.
-
A proč sakra nepoužiješ už hotový CMS a nenahodíš tomu jen jiný ksicht? Stejně to budete provozovat jako službu, takže jakékoliv úpravy nebudete muset nikomu poskytnout. Pokud požadovaný CMS nemá být nějak velmi doménově specifický, tak není důvod programovat to od píky, podívej se na Joomla či Drupal, dokonce i WordPress nacpaný pluginy může být plně dostačující. Jinak existují také open source CMS systémy napatlané v javě, jeden takový jsem zkoušel (allfresco) a zkušenost je taková, že to si ce vypadalo moc pěkně, ale JVM po čase vyčerpal všechny zdroje a spadlo mi to. Pravda, zkoušel jsem to v práci na Windows 7 kvůli rychlé evaluaci něčeho pro interní použití, navíc jsem nezjistil jestli jde o chybu systému a nebo JVM...
Jinak pookud se z jakýchkoliv důvodů s tím musíš jebat od píky, tak zkus Yii framework pro PHP, vypadá to celkem pěkně a zdá se, že to má budoucnost.
________________________________________________________
http://www.joomla.org/
http://drupal.org/
http://wordpress.org/
http://en.wikipedia.org/wiki/List_of_content_management_systems
http://www.yiiframework.com/
-
drupal se da naucit velmi rychle, dokonce i takhle jako service si ho umim predstavit (Drupal Gardens). Na VLASTNIM serveru se to da nastavit k paradnim vykonum. Kdybych chtel ted neco takhle velkeho pripravovat tak uz pujdu do D8 kvuli Symfony frameworku a performance optimization oproti D7. A vydal bych se smerem MongoDB jako field storage a APC nebo memcached jako cache backend.
-
Jestli tomu správně rozumím, tak neumíš pořádně Javu ani PHP, nemáš zmáklé ani jedno existující CMS a chceš vyvíjet nové? :D To by byl zřejmě produkt roku...
Na obou platformách existují stovky větších i menších CMS, které je možné koupit i se zdrojákem.
-
Jestli tomu správně rozumím, tak neumíš pořádně Javu ani PHP, nemáš zmáklé ani jedno existující CMS a chceš vyvíjet nové? :D To by byl zřejmě produkt roku...
Myslím, že tomu rozumíš velmi správně ;D
Možná v Javě dělá, ale nejspíš to bude Java SE pro desktop, viděl bych to na nějaké propracovanější Hello Word možná i s přístupem do DB, ale určitě nic na web. Vlastní CMS může být pro začínajícího programátora v PHP jednodušší, než studium komplexních frameworků, některé nabobtnaly do blobů, které připomínají oživlou Kaplického knihovnu požírající město. Pokud se bavíme o CMS jako o systému zajišťujícím přihlášení a napojení do DB, kdy to je schopné uložit nebo načíst článek, pak to je věc, kterou jsem nedávno v PHP udělal za jeden víkend. Tedy asi rychleji, než bych se naučil ZEND.
Hotové Frameworky mají své výhody i nevýhody.
Výhody jsou zjevné, například je kupa práce hotová, člověk je vedený za ručičku a udělá to dobře.
Na druhou stranu se uvnitř podobných frameworků objevují bezpečnostních chyby.
A priori není vlastní aplikačka více bezpečná než aplikačka postavená nad frameworkem, především pokud jí píše noobík programátor.
A posteriori je vlastní aplikačka více bezpečná z toho pohledu, že aplikačka postavená nad frameworkem vyžaduje hlídání a pravidelné bezpečnostní updaty toho frameworku, protože vznikají automatizované nástroje, které testují bezpečnostní chyby.
Tedy může být bezpečnější vlastní aplikačka kterou se nikdo nebude nikdy zabývat, než aplikačka postavená na jádru s bezpečnostní dírou, kterou někdo najde a pomocí automatizovaného nástroje projede určité vytipované weby.
Ono je to vidět i v realitě, noob programátoři si obvykle výhradně píší "vlastní CMSka" ve formě jednoduchého konektoru do DB třeba i bez modelu MVC resp. výhradně používají model PMNANTF "právě mě napadlo a náhodou to funguje".
Nebo na to jdou z druhé strany a nejprve provádí malinké úpravy stávajících systémů.
Zkušenější programátoři často používají hotové frameworky.
Pokud se ale jedná o velké projekty, velice často se vytváří vlastní komplexní systémy i třeba z důvodů, aby se uvnitř nikdo nemohl hrabat.
-
Není nad to vymyslet vlastní kolo ;-)
Zkuste OpenCMS http://www.opencms.org/ . Je to v Javě, udržované, prověřené uživateli ...
Wiki najdete zde http://www.opencms-wiki.org/wiki/Main_Page
-
Na druhou stranu se uvnitř podobných frameworků objevují bezpečnostních chyby.
...
aplikačka postavená nad frameworkem vyžaduje hlídání a pravidelné bezpečnostní updaty toho frameworku, protože vznikají automatizované nástroje, které testují bezpečnostní chyby.
Paklize by se snazil vytvorit to co tady popisuje tak to temer jiste pojede na jeho serverech (mysleno SW) a pak neni nic jednodussiho nez naucit par veci pana Jenkinse...