Java alapismeretek

Ezt a posztot összefoglalásképpen írtam azért, hogy helyre rakjak néhány dolgot a fejekben. Ebből kifolyólag lehet, hogy didaktikusabb lesz a kelleténél. Azt gondolom, hogy minimum ennyit mindenkinek illik tudnia, aki a kezébe internetet vesz.

Három dolog között kell különbséget tennünk:

1. JavaScript

A JavaScript és a Java nem ugyanaz, előbbi ugyanis egy böngészőben futó – kis túlzással – előre le nem fordított programnyelv. Az interneten futó alkalmazások használják többnyire mindenféle böngésző manipulációhoz, hibaüzenet kezeléshez, de pl. a Gmail legtöbb felhasználó számára látható funkció is JavaScriptben íródott. A modern web egyik alappillére.

2. Java programozási nyelv és környezet

1991-ben kezdték el írni a Sun cégnél (a Sun-t 2010 elején megvette az Oracle). A Java programozási környezet az egyik legnépszerűbb és legmodernebb szoftverfejlesztési platform, amit elsősorban nagyvállalati környezetben használnak, nagy weblapok, vállalati szoftverek kiszolgáló motorjai Javában íródnak stb.

A Java egyik okossága az volt, hogy ha megírtak valamit Javában, akkor az minden gépen el tudott indulni függetlenül attól, hogy Linux volt, Mac, vagy Windows PC. A programozónak nagyon könnyű volt a dolga, egyszer kellett megírnia, az mindenhol futott. Ez az ún. Java Virtuális Gép (JVM).

A Java nyelv egy szabvány, amihez létezik többféle fordító, amelyek mindegyike olyan kódot generál, amit a JVM szabványnak megfelelő virtuális gép tud futtatni. A Java SE és a Java EE közötti különbség az, hogy ugyanaz a Java milyen környezetben fut, és milyen szolgáltatásokat ér el. A Java SE azokat a szolgáltatásokat éri el garantáltan, amelyek tipikusan egy desktop környezetben kellenek. Tehát nincs feltétlenül adatbázis elérés, míg a Java EE implementációban minden olyan szolgáltatás elérhető, ami enterprise környezetben kell.

Általánosságban amikor a gépünkön levő Javáról beszélünk, akkor Java SE-t értünk alatta. Ez kell például a gépünkön levő Minecraft játék futtatásához is.

3. Java böngésző plugin

A JVM böngésző plugin formájában is megjelent az interneten elég régen. Rengeteg szoftvert írnak ma is így: ilyen a CIB bank kiszolgálója a böngészőben, ami gyakorlatilag ugyanazt a funkcionalitást pontosan ugyanúgy nyújtja Windowson és Macen is, de ilyen volt annak idején az IWIW előtt a WIW (Who Is Who), ami a kapcsolati hálót kirajzoló fát Java pluginben mutatta meg. Alapvetően kényelmi célja van ennek a fejlesztésnek: ha a CIB elkészíti a netbankját egyszer, az elvileg minden Javát támogató gépen el fog indulni böngészőben, másrészt egy modern programozási nyelvben kell mindezt elvégezni.

Miért érdekes ez az egész?

Ahogy megyünk előre az időben és a web egyre modernebb és több dolog kiszolgálására alkalmas felület lesz, úgy van egyre kevesebb szükség azokra a környezetekre, mint a Flash, vagy kliens oldali Java. Ma már egy gépre teljesen felesleges Javát telepíteni, hiszen a modern weblapok is képesek elérni ugyanazokat a célokat, amik programozásához eddig Javára volt szükség.

Ezzel sem lenne gond, de megjelent egy újabb probléma: a Java keretrendszer több, mint 850 millió PC-n található meg, böngészőből ennyi gépet el lehet érni. Ekkora installációs bázis már kellően izgalmas a vírusok íróinak ahhoz, hogy célzottan rámenjenek a Java biztonsági réseire, hiszen egy weblap látogatása során gyönyörűen ki lehet aknázni a hibákat és hozzáférni a gazda géphez. Bármilyen jó és biztonságos a Mac, ha a JVM-nek vannak jogosultságai és a JVM-ben megtalálnak valami hibát, egy egyszerű weblapon keresztül be lehet jutni a gépbe.

Ez a probléma annyira eszkalálódott már az utóbbi időben, hogy az Apple egy tavaly októberi Software Update során egyszerűen kikapcsolta a Java böngésző plugint (és így a CIB banki szoftvert is). Sőt, ha ma megvásárolunk egy új Macet, vagy operációs rendszert frissítünk, nem lesz rajta Java egyáltalán, sem böngésző plugin, sem Java SE.

Ha olyan helyi, lokális, nem böngészőben futó szoftvert akarunk futtatni, mint például a Javában írt Minecraft játék, akkor az Apple felajánlja, hogy letölti a Java SE 6-os változatát. Mivel helyi szoftverről van szó, ezzel általában nincs sok probléma, talán csak célzottan annak a játéknak a célzott támadásai nyithatnak felületet a hackerek számára – ez független egyébként a Javától, Flashben, sőt, Xcode-ban (ez a Mac fejlesztői keretrendszere) írt alkalmazások is pontosan ugyanennyire vannak veszélynek kitéve függően jellemzően attól, hogy mennyi biztonsági rést fedeznek fel bennük.

Egy új gépen a Minecraft futtatásakor az alábbi üzenetet kapjuk:

Ez felteszi a Java SE 6-ot, de nem teszi fel a böngésző plugint, minden veszély forrását. Abban az esetben, ha nekünk egészen konkrétan, és adekvát módon, a böngésző Java pluginre lenne szükségünk, mert például CIB ügyfelek vagyunk, akkor nincs más hátra, mint letölteni az Oracle oldaláról a böngésző plugint, vagy rákattintani a “Missing plug-in” feliratra a böngészőben. (Ne örüljünk túlzottan, mert a CIB netbank Oracle böngésző pluginben nem lesz copy-paste, viszont körül lehet járni a problémát.)

Az Apple mindezt elmondja a Java SE 6 oldalán is:

On systems that have not already installed Java for OS X 2012-006, this update disables the Java SE 6 applet plug-in. To use applets on a web page, click on the region labeled “Missing plug-in” to download the latest version of the Java applet plug-in from Oracle.

Vagyis a régi Apple-ös plugin már nincs többé – ezzel elveszik a Windows gombos copy-paste is, egyes appletek font-aliasingje stb., egészen addíg, amíg az Oracle meg nem oldja. De mit tehetünk, ha mégis hozzászoktunk? Létezik egy súgócikk, amivel vissza tudjuk hekkelni a régi Apple Java appletet. Vigyázat, ez csak profiknak!

Végeredményben annyit mondhatunk, hogy 1) Macen viszonylag könnyű feltenni a helyi programok, így például a Minecraft, futtatásához szükséges Java SE-t, csak nyissuk meg a játékot, vagy Terminalban írjuk be azt, hogy “java”, 2) a böngésző plugin minden bajok forrása, de ezt az Apple egy biztonsági frissítés során kinyírja nekünk. Ez valószínűleg egy következő Safari/OS X kiadás során másképp fog kinézni, viszont ha teljesen meg akarjuk nyugtatni magunkat, akkor győződjünk meg arról, hogy a használt böngészőinkben a Java ki-, a JavaScript pedig be van kapcsolva. Erről leírást ebben a posztban adok.