Prejsť na navigáciu

Rozhovor: Aké mýty tradujú o JAVE a aký lektor ťa bude sprevádzať kurzom?

| 30. 3. 2017

Ladislav Borák vyštudoval Aplikovanú informatiku na FEI STU v Bratislave. Už počas školy začal pracovať na part time v niekdajšom IT Solution, dnes Erste Group na pozícii Junior Developer. Neskôr participoval na rozširovaní, prerábke a bugfixingu úverového návrhu, ktorý sa vtedy v Slovenskej sporiteľni riešil v exceloch. Mal možnosť pracovať na projekte Billien pre spoločnosť Kedros, ktorá na danom projekte participovala. Išlo o informačný systém pre podporu obchodných a prevádzkových činností zákazníkov a spoločností. Bol súčasťou tímu, ktorý mal na starosti L2/L3 Support. O pár rokov neskôr začal pracovať pre spoločnosť Pantheon Technologies na projekte Yangtools. Tu zas išlo prevažne o testovanie, refactoring a implementovanie menších rozšírení do už existujúceho frameworku. Osvojil si zaujímavý jazyk Yang, pomocou ktorého modelovali štruktúru dát. Naučil sa programovať v Xtende, kde zdrojový kód vygeneroval v runtime Java kód. Oboznámil sa s implementáciou protokolov v Jave ako sú BGP, PCEP a Netconf.

Momentálne pracuje na pozícii IT Development Specialist v spoločnosti ZUNO Bank AG. Už na pohovore mu bolo povedané, že pozícia bude rozdelená na dve zložky a to v pomere 70/30 - Development/ Performance Testing. Na tejto pozícii si osvojil koncept tvorby architektúry performance testingu rôznych typov aplikácií, t.j. mobilných, responzívnych a aj klasických webových.

Spoznal čaro AIXovského cronu. Napísal niekoľko programov v programovacích jazykoch Perly, Bashy, Pythone, v zložitejších prípadoch v Jave. Posledný mesiac spoznáva IBM BPM nástroje. 

JAVA 

1. Java je všeobecný pojem. Čo najčastejšie zahŕňa?

Java je jednoduché robustné objektovo-orientované platformovo nezávislé viacvláknové dynamické a univerzálne programovacie prostredie. Javu dnes nájdete skoro všade tam, kde nájdete mikroprocesor.

Základom ohromnej prispôsobivosti tohto jazyka a rovnako jeho nesmiernej popularity je fakt, že je platformovo nezávislý. Autori sa držali hesla: "Napíš raz, spusti všade". Celú architektúru Javy v skutočnosti tvoria nasledovné súčasti:

  • programovací jazyk Javy
  • formát súboru .class
  • aplikačné programovacie rozhranie Javy (JAVA API)
  • virtuálny stroj jazyka Javy (JVM)

2. Aký je rozdiel medzi Javou a JAVA scriptom?

Začal by som vtipom, že Java má asi toľko spoločného s Javascriptom, ako má ham a hamster :-) Predpokladám, že vtip pochopia len anglicky hovoriaci. JavaScript je objektovo-orientovaný programovací jazyk, ktorý umožňuje vytvoriť dynamické web stránky, procesovanie a ukladanie dát zvyčajne v rámci prehliadača. 

Java je programovací jazyk, obsahuje obrovskú knižnicu, tried a JVM (Virtuálny stroj jazyka Java), ktorý umožňuje vytvoriť programy a spúšťať ich na všetkých platformách/OS, na ktorých je nainštalované JVM (Unix, Linux, AIX, Solaris, Motorola, Siemens, Widnows, Mac, a iné.) Aj keď tieto programovacie jazyky majú podobný názov, slúžia na riešenie úplne odlišných problémov.

3. Kto je Java Developer Junior? Laicky vysvetlené pre neIT človeka?

Je to programátor, ktorý má minimálne pracovné/profesné skúsenosti s vývojom aplikácií v Jave. 

Avšak je potrebné zdôrazniť, že programovanie v Jave mu nie je cudzie a má za sebou desiatky, prípadne stovky vyriešených problémov, t.j. naprogramovaných aplikácií v Jave. V rámci tímu sa predpokladá, že sa bude často obracať s nejasnosťami na skúsenejšieho kolegu a častokrát bude potrebovať pomocnú ruku, no všetci sme raz začínali. 

4. Aké mýty sa s Javou najčastejšie spájajú?

Všetky mýty v spojitosti s programovaním v Jave vychádzajú z mylnej predstavy a nesprávneho vnímania Javy. Uvediem len 10 najčastejších mýtov:

Výsledný program v Jave je pomalší (pretože Java)

  • Často panuje názor, že Swing je pomalý, je to však omyl. 
  • Komponenty grafického používateľského rozhrania vytvorené v Swingu sú spravované Javou, čo zvyšuje prenositeľnosť a ovládateľnosť v rámci bežiaceho programu v Jave.
  • Niektoré aplikácie nevyžadujú komplexné GUI, ktoré sú spravované Swingom, ako napr. menu, tlačítka, tabuľky, posuvníky, kalendár a pod, zatiaľ čo myš a klávesnica sú procesované pomocou AWT.

Sťažnosti ohľadom pamäte

  • Jednou zo sťažností je to, že Garbage Collector sa spúšťa v zle načasovaných intervaloch, čo má za následok pozastavenie Java aplikácie na pár sekúnd, kým garbage collector uvoľní nepotrebné zdroje.
  • JVM má rôzne garbage collectory, ktoré dokážeme vyladiť priamo z príkazového riadku.
  • Informácie o výkone garbage collectora môžeme získať a následne analyzovať pomocou jedného z mnohých nástrojov, ktoré nám Java poskytuje, napr. použitím jps, jstack, a iných.

Java je až príliš vysokoúrovňový programovací jazyk

  • Mylná predstava o tom, že používanie Java tried, objektov a dedičnosti má za následok vyššiu réžiu ako vyplývajúci benefit.
  • Avšak Java má obrovskú knižnicu, ktorá obsahuje veľmi rýchle I/O, pokročilé 2D a 3D grafické koncepty a širokú škálu použitia sieťových technológií.
  • Výhody plynúce z objektovo-orientovaného návrhu obohateného o UML robia veľký a zložitý systém lepšie spravovateľný, a to nielen počas vývoja, ale rovnako aj po nasadení do produkcie.

Nezávislosť na platforme má za následok, že nedokážeme používať vstupno/výstupné operácie na rýchly a priamy prístup do Video RAM

  • Problém bol vyriešený vo verzii Java SE 1.4, v ktorej sa zaviedol FSEM, vyhradený exkluzívny celoobrazovkový (fullscreen) režim, ktorý "potlačil" bežnú prácu s oknami.
  • Poskytuje a umožňuje aplikácii priamy prístup ku grafickej karte a teda poskytuje kontrolu nad rozlíšením monitora a hĺbkou obrazu.
  • Hlavným cieľom FSEM bolo zrýchliť aplikácie masívne využívajúce grafiku ako sú napr. hry.

Java je pomalá

  • Skutočne toto tvrdenie bolo pravdivé v spojitosti s počiatočnými verziami Javy. Avšak postupom času ako Java "dozrievala", tento pocit z pomalého behu Java aplikácií sa vytratil.
  • Z Javy sa stal efektívny programovací jazyk, ktorý nemá žiadne problémy s výkonnosťou.

JDK (Java Development Kit) je situovaný len pre akademikov a nie je vhodný na použitie v rozsiahlych produkčných systémoch

  • Tento mýtus je pravdepodobne najväčším mýtom v celom svete Javy.
  • Napríklad, len pred pár rokmi Twitter nahradil Ruby Javou. 
  • Táto zmena sa uskutočnila za účelom dosiahnutia vyššieho výkonu a dodnes používajú openjdk.
  • Na základe prieskumov má Twitter okolo 250 miliónov twittov každý deň.

Na verzii Javy nezáleží

  • Mnoho ľudí má mylnú predstavu o tom, že budú navždy používať verziu Javy napr. Java SE 1.4 a výkonu ich aplikácií sa to nikdy nedotkne.
  • Avšak je potrebné zdôrazniť, že Java zaznamenala zlepšenie výkonnosti pri každom nasledujúcom release, t.j. JDK 1.5 je oveľa rýchlejšia ako Java SE 1.4, a rovnako aj JDK 1.6 je rýchlejšia ako JDK 1.5, atď.
  • Môžete si byť istí, že aplikácia napísaná v Java SE 1.4 vo vyššej verzii Javy pobeží minimálne rovnako rýchlo, ak nie rýchlejšie.

Inštalácia Javy je nočná mora

Panuje mylná predstava o tom, že používateľ Java aplikácií musí byť expert aby vedel, že:

  • Java musí byť na danom zariadení nainštalovaná pred samotným spustením Java aplikácie. 
  • Nie je možné kompilovať aplikáciu pre konkrétnu platformu. Všetky tieto problémy je možné jednoducho vyriešiť správnou inštaláciou programu.
  • JWS (Java Web Start) môžeme použiť na stiahnutie aplikácií, ktorý bol vylepšený vo verzii Java SE 1.4

Applety dokážu prečítať pevný disk a vymazať súbory z disku:

  • V prípade, ak sa applet pokúsi pristúpiť k lokálnym súborom, vznikne bezpečnostná výnimka, čo môže mať za následok pád samotného appletu, avšak prístup k lokálnym súborom bude zamietnutý.

Java vyžaduje webový prehliadač a beží len v ňom:

  • Väčšina používateľov Javy je oboznámená s tým, že applet dokáže bežať v rámci prehliadača.
  • Java aplikácia môže bežať ako ktorýkoľvek iný program, jediné čo potrebujete, je nainštalovať JVM na spustenie Java aplikácie.

5. Čo ťa najviac na tejto práci baví?

Na mojej práci ma fascinuje hlavne to, že každý deň ma čaká niečo nové. Nakoľko som súčasťou malého tímu, každý problém musím zanalyzovať sám, navrhnúť riešenie implementovať ho, otestovať, nasadiť, zdokumentovať a následne riešiť bugfixing.

6. Popíš nám svoj pracovný deň.

Každý deň je úplne iný, tak napríklad včera: povýšením verzie IBM BPM z 8.5.5 na 8.5.7 sme zistili, že pôvodné heritage server side servisy sú deprecated, a preto som ich nahrádzal novými responzívnymi human client side servismi. 

Bolo potrebné si naštudovať prácu s novými responzívnymi coaches a následne GUI zintegrovať s Javou (JMSkom) pomocou integračných servisov. Inými slovami povedané, človek sa učí každý deň. Kód, ktorý napísal programátor pred pár rokmi, by dnes určite napísal čitateľnejšie, prehľadnejšie, efektívnejšie, kratšie a pod.

7. Aké je Javu vyučovať online? Je to vôbec možné?

Môj názor je taký, že programovať sa môže naučiť každý. Bez ohľadu na vek, pohlavie a pod. Rovnako je to napr. s bicyklovaním. Keď ste boli deti, kúpili vám prvý bicykel, namontovali pomocné kolieska a po čase vám to išlo už tak dobre, že ste ich už nepotrebovali a jazdili ste dokonca bez pomoci rodičov.

Rovnako je to aj s programovaním. Programovať sa nenaučíte čítaním kníh, pozeraním videí a pod. Je potrebné sadnúť si za počítač, osvojiť si základné konštrukcie programovacieho jazyka a začať riešiť úlohy/problémy. Čím viac ich vyriešite, tým rýchlejšie vyriešite problémy podobného typu a tým skôr budete pripravení na písanie produkčných aplikácií.

Počas tohto kurzu vás budem viesť, teda budem vašimi "pomocnými kolieskami" na ceste stať sa úspešným programátorom.

8. Mal by mať uchádzač o kurz Java Developer Junior nejaké špeciálne skúsenosti a predpoklady?

Z mojich skúseností a skúseností mojich známych môžem s určitosťou povedať, že sa vyžaduje len základné logické, analytické a algoritmické myslenie. Tým mám na mysli to, že ak dostanete nejakú úlohu, je potrebné si daný problém najprv osvojiť, t.j. vedieť ho vyriešiť ručne/manuálne a až potom môžete vytvoriť a implementovať daný algoritmus.