Portál AbcLinuxu, 30. dubna 2025 15:25
V minulém díle jste se dočetli, proč jsem přešel od PHP. Dnes se dovíte, proč jsem zvolil Javu.
Hlavní důvod, proč jsem zvolil Javu, byl veskrze praktický - pracuji s ní totiž každý den. Proč bych se měl učit něco jiného, když Java mi poskytuje vše potřebné? Pokud jste v něčem dobří, používejte to. Nemá smysl přecházet na nějaký jiný jazyk jen proto, že je to zrovna módní. Důležité jsou jen dvě věci:InputStream
. Hlavními metodami jsou read()
a close()
. Použití je snadné. Naučíte se s nimi pracovat třeba při
čtení ze standardního vstupu. Později začnete pracovat se soubory a ejhle -
rozhraní je stejné. Až se dostanete k soketům či komprimovaným archivům, opět
použijete stejné metody a nemusíte se učit nic nového. Takhle je to v Javě se
vším - čistota designu a produktivita práce jsou na prvním místě.
Asi bych se měl zmínit i o dalších aspektech jazyka, které zvyšují efektivitu
programátora.
null
.
Inicializované pole obsahuje položku length
. A pokud si přesto
nedáváte pozor a použijete neexistující prvek, vyskočí
NullPointerException
či ArrayIndexOutOfBoundsException
.
int
do byte
. Céčko vám díky automatické konverzi vezme
cokoliv, Java si vyžádá potvrzení vašeho úmyslu byte b = (byte)i;
.
Zdá se vám to zbytečná buzerace? V 80% případů potvrdím svůj úmysl doplnění
přetypování, ale ve zbylé pětině se zarazím a změním typ deklarované proměnné. A
děsím se představy, za jakých okolností by se tato chyba projevila.
false
a vše ostatní je true
, umožní
programátoru neskutečné optimalizace a kejkle, ale zároveň i příšerné chyby.
Například tento nekonečný cyklus je v Céčku platný, v Javě jej zamítne už
kompilátor:
int i = 2, j = 2; while ( i=j ) i++;Pro méně pozorné, programátor zapomněl jedno rovnítko, takže se z testu rovnosti stalo přiřazení nenulové hodnoty. A to v Cečku nabývá vždy hodnoty
true
. Kompilátor Javy by našel číselný výraz na místě, kde
očekával výraz logický a odmítl by pokračovat. errno
). A pak spoléhat na
to, že programátor nezapomene ji otestovat. V Javě prostě hned na začátku při
testu platnosti vstupních dat vyhodíte vyjímku a i kdyby ji programátor
ignoroval, za běhu programu je možné zjistit, v které části (či dokonce na
kterém řádku) je chyba. Object
. Hierarchie tříd proto tvoří stromovou strukturu. Díky tomu
je snadné napsat metodu, jejímž parametrem může být libovolný objekt. Šablony z
C++ se mohou zahrabat hanbou! Java nepodporuje vícenásobnou dědičnost, ale
rozhraní jsou dostatečnou náhradou této obtížné vlastnosti. Opět vás to přinutí
psát čistší kód. A automatický garbage collector je rájem pro zapomnětlivce,
kteří zapomínali volat destruktor v C++ a zahltili tak volnou paměť. Pravda,
implementace by mohla být efektivnější, ale koncept je výborný. javadoc
lze extrahovat veškerou dokumentaci do podoby html.
toto je vubec prvni komentar v Abc. Pozdeji pribudou i diskusni fora, nebojte.
Tak programatori, konecne se muzete vyjadrit k tomuto serialu. Pro diskuse o PHP prejdete na minuly clanek. V tomto se muzete vyjadrovat o vasich nazorech a zkusenostech s Javou. Vsechny clanky serialu budou archivovany v sekci Architektura.
Ze jde zapnout warningy, pekne, ale kolik % lidi to pouziva?
Ze jde zapnout warningy, pekne, ale kolik % lidi to pouziva?
1) Jak je to se zatizenim serveru kdyz se porovna puvodni system v PHP a tento system v Jave.
2) Kdy budou nasledovat dalsi clanky, pripadne uvolneni zdrojovych kodu, neb se uz ve svych PHP zacinam pomalu ztracet.
Diky moc za tenhle super server Mikron
pamet: java je nejmin o rad narocnejsi
CPU: nevim, ale typicky pod 2% u 700MHz
procesoru
ad2\
tento vikend budu psat clanek do CW o JDK1.4, takze nejspis druha pulka pristiho tydne.
sorry, nestiham rychleji
Warningy si zapina ten kdo chce predchazet chybam. Me je na C/C++ sympaticky prave to ze mam svobodu se rozhodnout jak kvalitni bude muj kod :))
Ale opet opakuji, a v tom myslim se shodnem, ze programator by mel pouzivat ten jazyk ktery umi nejlepe a pokud jich umi vice stejne dobre pak vyuzit k danemu ucelu ten nejvhodnejsi.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.