A Javascript programozási nyelv

Bevezetés

A nyelv kialakulása

A JavaScript, mint neve is mutatja, egy script nyelv, amit legelőször a Netscape Navigator 2.0 támogatott. A Javascript a WWW-ért született. Jelenleg nem is létezik más implementációja, mint ami a böngészőkben és a webszerverekben fut. A Sun és a Netscape által kifejlesztett parancsnyelvnek két változata létezik. Az ún. LiveWire lehetővé teszi, hogy szerver oldali alkalmazásokat készítsünk, ami hasonló a CGi-hez (Common Gateway interface). A másik a kliens oldali, ami lehetővé teszi egyszerűbb programozási feladatok elkészítését a Weben (pl. mozgó HTML elemek, interaktív funkciók). A kliens és a szerver oldali rész egy külön világ, szintakszisuk ugyan megegyezik, de a programozói interfész teljesen más. A kliens oldali JavaScript a böngészőkön keresztül jelenik meg számunkra. Mégpedig úgy, hogy a JavaScript kódot az általános HTML kód közé ékeljük. Amikor a böngésző megjeleníti a HTML kódot, akkor a <script> és </script> közé írt kódrészleteket nem megjeleníti, hanem értelmezi, és futtatja, ezáltal dinamikus viselkedést kölcsönöz az oldalnak. (Van lehetőség a JavaSript kódot egy külön állományba helyezni és a HTML-ből pusztán hivatkozni erre az állományra. Többek szerint ezutobbi megoldás a követendő példa hogy jól struktúrált és áttekinthető legyen az internet, valamint hogy a különböző szemantikával rendelkező tartalmak különböző helyen kerüljenek tárolásra.)

Verziókövetés

A JavaScript 1.0-s változata a Netscape Navigator 2.0-ban jelent meg 1995-ben. A programozási nyelv jelenleg az 2.0-ás változatnál tart. Most tekintsük át az eddigi változatok legfontosabb újításait:

Lásd. még: Wikipédia: Javascirpt verziók

Javascript és Java

A Java nyelvre csak távolról hasonlító JavaScript parancsok a HTML állományokba írhatók bele és a Web-kliensek soronként értelmezve hajtják végre azokat, de itt gondot okoz, hogy az egyes régebbi böngészőprogramok eltérő módon támogatják vagy egyáltalán nem ismerik a JavaScript nyelvet. JavaScript, Java nagyon hasonlít az elnevezés, de szögezzük le a JavaScript nem Java, nem is annak a leegyszerűsített változata.

A Java-t a Sun Microsystems fejlesztette három éven keresztül (NetRunner néven), a Netscape úgy döntött, hogy neki nagyon szüksége van erre a rendszerre. Olyan dolgokat lehetett ugyanis vele csinálni, amilyeneket az őáltala egy éve fejlesztett LiveScript nyelvvel nem. A Netscape Navigator 2.0-ba végül mindkét nyelve belekerült - üzletpolitikai okokból azonban a LiveScriptet az utolsó pillanatban átnevezték JavaScriptre.

A JavaScript LiveConnect funkciójával megoldható, hogy egy Java és egy JavaScript kód kommunikáljon egymással. A JavaScript oldaláról elérhetővé tehetőek a Java objektumok és hozzáférhetőek közös eljárásaik és mezőik. A Java oldaláról elérhetőek a JavaScript objektumok, tulajdonságok és eljárások.

JavaScript Java
A kliens értelmezi, nem fordítja a kódot. A már lefordított kódot tölti le a kliens, majd futtatja.
Objektum-alapú. Csak egyedi objektumokat lehet létrehozni, kiegészíteni és kezelni, osztályokat nem. Objektum-orientált. A programok osztályokból állnak, melyeket példányosítani lehet. Osztályokat lehet származtatni.
A kód a HTML-be integrált, a kliens onnan olvassa ki, és értelmezi. A programba a HTML-ből hivatkozunk, de a tényleges program attól külön található.
Gyenge típusosság. A változók típusát az aktuális értéke határozza meg. Erős típusosság. Minden változó meghatározott típussal rendelkezik.

Javascript és böngészők

A JavaScript különböző verziói alapvetően a Navigator meghatározott verziói alatt működnek (természetesen egy IE vagy egy Firefox alatt is müködnek a JavaScriptek), azokhoz készültek. (Például, a JavaScript 1.2 a Navigator 4.0 verziójához készült. Néhány olyan lehetőség, amely a JavaScript 1.2 verziójában megtalálható, nem elérhető a JavaScript 1.1 verziójában, ennélfogva nem elérhető a Navigator 3.0 verziójában sem.)

Mivel a JavaScript interpretált nyelv, a programunk csak az oldal betöltésekor fog lefutni, addig a HTML kód sorai között pihen. Ennek a megoldásnak az az előnye, hogy a hibás programsorokat könnyedén tudjuk javítani, hátránya viszont az, hogy a megírt scriptünkhöz bárki hozzáférhet, aki megtekinti oldalunkat s könnyen el is "lophatja" azt. Viszont sokat is lehet tanulni így az ember könnyen találhat olyan scripteket különböző oldalakba ágyazva, amikből ötleteket meríthet, fejlesztheti tudását, jártaságát a JavaScript nyelvben.

Ha egy programot a böngésző futtat, annak vannak pozitív és negatív tulajdonságai is. Előnyként értékelhető az, hogy a scriptünk platformfüggetlen lesz, tehát ugyanúgy fog futni egy Macintosh gép böngészőjében, mint a sokat dicsért Windows-os környezetben. Hátrányai közé sorolható viszont az, hogy a script hibátlan futtatása - a többféle szabvány értelmezésének köszönhetően - erősen a használt böngésző típusának függvénye. Jelentős eltérések fedezhetők fel már csak Windows-os böngészők JavaScript implementációinak összehasonlítása során is. Nézzünk meg ugyanazt az oldalt Internet Explorer, Netscape, Mozilla Firefox vagy Opera böngészőkkel. Gyakran mintha különböző oldalakat néznék. Jó esetben csak néhány funkció nem működik az oldalon, máskor azonban az egész weblap működésképtelenné válhat.

További problémák merülhetnek fel, ha oldalunk látogatója olyan böngészőt használ, mely nem támogatja, vagy nem ismeri a JavaScriptet, bár ennek valószínűsége manapság igen kicsi. E böngészők ugyanis hajlamosak arra, hogy a számukra értelmezhetetlen utasításokat egyszerűen megjelenítik, mintha az a weblap szövegének része lenne, elcsúfítva és feltárva ezzel gondosan elkészített oldalunkat. Hogy ezt elkerüljük az utasításainkat a HTML kód megjegyzései közé kell beillesztenünk: a "" szekvenciák közé. Az újabb böngészőket nem zavarja ez a kis csalafintaság, a HTML szabványt pontosan követő régebbi változatok pedig nem zavarodnak össze tőle, mert egyszerűen kommentként értelmezik a valójában script-kódot tartalmazó oldalrészeket.

A fentiek miatt nagyon fontos, hogy szem előtt tartsuk a következő dolgokat:

  1. scripteket csak korlátozott mértékben alkalmazzunk, és lehetőleg úgy, hogy azt több böngésző segítségével is kipróbáljuk.
  2. ha lehetőség van rá, alkalmazzunk statikus HTML megoldásokat a feladatok ellátására
  3. ha lehetőség van rá, alkalmazzunk szerver-oldali ellenőrzéseket a bemenő adatok validálására
Mindezeket arra az esetre, ha a JavaScript kódunk ezt a feladatot a böngésző verziója és/vagy beállításai miatt nem képes elvégezni. Hogy egy kicsit érthetőbb legyen: ha script segítségével automatikusan átirányítunk egy oldalt egy másikra (később leírjuk hogyan), akkor tegyünk az oldalra egy linket is, amelyik a másik oldalra vezet, azon böngészők számára, akik nem értik a JavaScriptet. A problémák egy része ugyan a böngésző azonosításával (szintén később) elkerülhető, azonban jobb a scriptek használatával csínján bánni.