Press "Enter" to skip to content

Archiv pro štítek: java

Opět jsem si rozšířila obzory…

Do předmětu PDB (pokročilé databáze) jsme s přítelem dělali celý http server v Javě, který komunikoval s Oracle databází. Do těď jsem se úspěšně Javě vyhýbala. V naději, že si Java se školní databází pokecá lépe než C#, ve kterém jsem chtěla vyvíjet původně, jsem na tu Javu přistoupila.

Ehm… Trochu (hodně) jsem se pletla.

Jestliže jsem si naivně myslela, že Java není tak strašná a že prostředí na komunikaci s databází bude minimálně tak přívětivé, jako je v Entity Framework… mno byla jsem úplně vedle. Ne, jediný rozdíl oproti potenciální implementace v C# byl akorát ve způsobu pracování Orácle SDO_GEOMETRY, jehož obdova v Javě je JGeometry. Tento typ se vůbec nemusí nijak převádět při komunikaci s databází.

Proč jsem tedy vlastně opustila od možnosti programovat to v C#? Bylo to mé zjištění, že ODP.NET (Oracle Data Provider, který funguje i s Entity Framework) nepodporuje SDO_GEOMETRY ani multimediální typy specifické pro Oracle, a bohužel celý projekt byl přesně o užívání těcho typů a SQL funkcí nad nimi. Jediný způsob (o kterém mi řekl až náš cvičící, kterému jsem psala nešťastný email), byl pomocí WKT (Well-known text).

V naději, že se vyhnu tomuto micromanagementu jsem přecházela do Javy, kde jsem se tomu stejně nevyhla. Protože to co C# dnes má obsaženo ve svých standardních knihovnách, Java jednoduše nemá. Běžné konverze mezi podobnými typy? Statické třídy i s kontrolou překladače? Typy jako Pair, Triplet, nebo Tuple? Nějaké dodržování standardu při pojmenovávání method? Ručnímu, nebo aspoň methodou generovanému SQL jsem se stejně nevyhla (Entity Framework a LINQ většinu téhle komunikace pro programátora příjemně zaobalí do líbivého a srozumitelného kédu) a práce s návratovou hodnotou z databáze je něco naprosto děsného. ResultSet má kurzor, vůbec se nedá mapovat na nějaký smysluplný senzam objektů se kterým by se dalo nějak rozumě pracovat. Teda pokud si to člověk neudělá všechno ručně, že.

Připadalo nám, že jsme se vrátili tak trochu zpět k C, ale pořád nám zůstal ten divný pocit objektovosti. Ani s C++ se to nedá srovnat, protože pokud používáte boost, hodně věcí už ani tam nemusíte řešit. Nejvíc zhrozená jsem asi byla ze způsovu, jakým fungují interface a abstraktní třídy. Nemluvě o šílené a bídné podpoře komunikace s Oracle databází, kterou jsme si stejně museli implementovat sami.

Java – Zpátky do jeskyní. Prý se někde na fórech říká, že Java je zombie jazyk. Mno, o C# se toho říká taky hodně… Ale dokud to bude Microsoft tlačit tak jak to tlačí, myslím, že má rozhodně mnohem větší budoucnost.

Takže jsem si zaprogramovala v Javě, zanadávala, vrátím se zpět k oblívenému C# v naději, že Javu už nikdy neuvidím. A na závěr si dovolím malý citát.

Java je dobrá jen na to, aby ji někdo vzal, pochopil, a přepsal do C#.