Cau,
delam ve firme, kera se zabyva vyvojem PHP stranek. Sme v tom dost dobri, nicmene vedeni se rozhodlo ze budeme prechazet na Javu a JSP. Nelibi se mi to hned z nekolika duvodu. Java muze byt sebe hezci jazyk, muze se v ni sebelip programovat, ale proc? Ona prenositelnost je hezka vec, ale kdo bude delat web programing a myslet na to ze bude potreba aby tyhle stranky behaly stridave na win, lin, solaris? PHP je dostatecne rychle, plus pokud pouzivate knihovny psane v C, popr Corbu neni snad nic co by v tom neslo napsat.
BTW neexistuje nejaky kompilator, kery by prekladal java veci primo pro dany system a procesor a ne pro JDK? (delal mi z toho binarka) Na prenositelnost kaslu, chci mit real-time kompilator na odladeni chyb a ne cekat 30 sec na zkompilovani a dalsich 30 sec na spusteni programu (celer 400/128 RAM) Jazyk je to hezky, ale ta rychlost...
Vase mineni je nepodlozene a naprosto mylne. Prenositelnost neni hlavni vyhodou Javy na serverech. Je to zejmena BEZPECNOST a ROBUSTNOST.
Co se tyce rychlosti, dnesni JIT kompilatory jsou temer stejne rychle jak jazyk C/C++ (dokonce v jednom matematickem testu VM od IBM verze 1.3 byl *RYCHLEJSI* nez stejny program v C - to diky spickove optimalizaci). Je pravdou, ze Java ma velke naroky na pamet, ovsem to V ZADNEM PRIPADE nevyresite tim, ze bytecode prekompilujete (GJC, TowerJ, Excelsisor JET, Kaffe...) do nativniho kodu platformy. Garbage collector zustava a pameti to 'zere' temer stejne. JIT kompilatory delaji uplne to same, ale JUST IN TIME, tedy real-timove. U servletu by to snad ani neslo pouzit (lze to????).
Co myslite tim realtime kompilatorem? :-) Pokud mate na mysli to, ze PHP je interpretovane, tak to Java take. Co se tyka kompilace JSP stranek - je pravda, ze to trosku trva, protoze kompilator JSP->Servlet je napsan v Jave, takze se ponekud dele spousti. Jakmile ale Vase firma zakoupi nejake kompletni reseni (WebSphere, JRun, JBuilder, Forte...), tak se nemusite bat. JSP kompilatory jsou v techto nastrojich velmi rychle. Pochybuji ale, ze pokud Vase firma investuje do nektereho z vyse uvedenych Enterprise produktu a utrati statisice korun, budete vyvijet na nejakem Celeronu s troskou pameti :) Budete mit server, ktery bude JSP stranky pohlcovat stejne rychle, ze nebudete stacit mackat funkcni klavesu pro spusteni webove aplikace ve Vasem IDE.
Pokud chcete vytvaret Java ulohy, doporucuji extra rychle kompilatory JIKES nebo FASTJAVAC. Jsou napsane v C a proto se spousti okamzite (a okamzite kompiluji). O
Add Zendi a jejich Enterprise reseni. V podstate je na houby. PHP editor je hezky barevny, ale co z toho kdyz sakra umi jenom doplnovat HTML tagy. Predpokladal bych, ze pokud chteji udelat plnohodnotny editor na PHPko, bude tam doplnovani PHP funkci, aspon tech zakladnich, jako *_query(), nebo skryvani kodu v if klauzulich -> pokud ste videl nejake ukazky z .NET visual C je vam jasne o cem mluvim. Co se tyka debuggeru, pokud nastavim v php.ini debug level na 8 , pravdepobne bude vylsedek stejny jako s debuggerem, ale tohle sem nezkousel, neni cas ;(. Proste, vsichni u nas se na to tesili, pak sme to koupili a shodli sme se na to ze sme ty prachy meli propit. Navic ta cena, to uz je naprosta nehoraznost.
Za vyraz real-time kompilator se omlouvam myslel sem to zhruba tak ze pokud si v C udelam 'hello world' (aby nedoslo ke zmateni pojmu, myslim ten nejproflaknutejsi Ritchieho program ;) ), a necham ho zkompilovat, binarko mam po 1/2 sekunde. Pokud to samy napisu v JAVE, kompilace na tom samym (mym) stroji trva 10 sec. Tedy pokud delam s JDK 1.3, kerou mam stazenou. Je fakt, ze ackoliv ted tancim okolo Javy takove ty uvodni seznamovaci ritualni tance, nemam moc cas zkouset nejaky vychytavky, jako jikes, hledat optimalni kompiler. Dalsi vec je, ze pri dnesnich cenach hardwaru je ciste moje blbost ze si u sebe zivim nejakyho toho Celera.
Na zaver Vas pozadam o radu. Jaky je nejlepsi kompilator (preferuji free, ale klidne i komercni) javy na Blinuchu? Ono kdyz se to clovek uci, nejvic ho dokaze vytocit minutova kompilace s chybovym vystupem ;).
Diky a taky hezky den.
Ackoli sam pouzivam PHP, take programuji v Jave a neda
mi to nereagovat.
Transcript (omluvam se za tochu delsi prispevek):
bash-2.03$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Celeron (Coppermine)
stepping : 3
cpu MHz : 567.972
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips : 1133.77
bash-2.03$ cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 129761280 127770624 1990656 0 1486848 57434112
Swap: 148013056 0 148013056
MemTotal: 126720 kB
MemFree: 1944 kB
MemShared: 0 kB
Buffers: 1452 kB
Cached: 56088 kB
Active: 38424 kB
Inact_dirty: 15612 kB
Inact_clean: 3504 kB
Inact_target: 288 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 126720 kB
LowFree: 1944 kB
SwapTotal: 144544 kB
SwapFree: 144544 kB
bash-2.03$ time javac HelloWorld.java
real 0m4.389s
user 0m1.690s
sys 0m0.290s
bash-2.03$ rm HelloWorld.class
bash-2.03$ time javac HelloWorld.java
real 0m2.493s
user 0m1.730s
sys 0m0.230s
bash-2.03$ time java HelloWorld
Hello, world!
real 0m0.751s
user 0m0.480s
sys 0m0.130s
bash-2.03$ rm HelloWorld.class
bash-2.03$ time /usr/local/NetBeans31/bin/fastjavac/fastjavac.linux HelloWorld.java
real 0m0.389s
user 0m0.150s
sys 0m0.030s
Tech 4.389s bylo prvni spusteni javac po rebootu,
tech 2.493s hned potom (vsechno v cachich)
no a 0.389s fastjavacu myslim mluvi dost jasne.
Jedina nevyhoda fastjavacu je, ze obcas vygeneruje neplatny kod (ale opravdu jen u dost silenych konstrukci a neni prece problem pouzivat fastjavac pro ladeni a pro deploy pouzit javac).
Co se tyce srovnani s Cckem: Velke projekty by asi mely
kratsi kompilacni cas pokud by byly v jave nez v C,
pro C se kompilator spousti (obecne) pro kazdy zdrojak
zvlast, zatimco javac nasosa vsecny tridy najednou a pak vysype .class soubory.
Java je super jazyk>je i super na delani webu. programuju i v php a jsou veci ktere se v jave delaji o poznani jednoduseji a nektere nemaji v php ekvivalent(beany). V tom beanu v clanku je drobna chyba a to ze neimplementuje Serializable, coz je docela problem protoze pri vypnuti kontejneru(tomcat) prijdete o data:(