New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Java programozási nyelv - Wikipédia

Java programozási nyelv

A Wikipédiából, a szabad lexikonból.

A Java egy objektumorientált programozási nyelv, amelyet a Sun Microsystems fejlesztett ki a 90-es évek folyamán.

Bár a nyelv neve kezdetben Oak (tölgyfa) volt (James Gosling, a nyelv atyja nevezte így az irodája előtt növő tölgyfáról), végül is Java néven vált ismertté.

A Java szó a Sun Microsystems védjegye. Ennélfogva engedélye nélkül más nem használhatja más által kifejlesztett termékek megjelölésére még pl. Java-szerű stb. összetételekben sem, mert ez a védjegyjogosult jogaiba ütközik.

Tartalomjegyzék

[szerkesztés] Általános tudnivalók

Négy fontos szempontot tartottak szem előtt, amikor a Javát kifejlesztették:

  • objektum-orientáltság;
  • függetlenség az operációs rendszertől, amelyen fut (többé-kevésbé);
  • olyan kódokat és könyvtárakat tartalmazzon, amelyek elősegítik a hálózati programozást;
  • távoli gépeken is képes legyen biztonságosan futni.

[szerkesztés] Objektum-orientáltság

A nyelv első tulajdonsága, az objektum-orientáltság („OO”), a programozási stílusra és a nyelv struktúrájára utal. Az OO fontos szempontja, hogy a szoftvert „dolgok” (objektumok) alapján csoportosítja, nem az elvégzett feladatok a fő szempont. Ennek alapja, hogy az előbbi sokkal kevesebbet változik, mint az utóbbi, így az objektumok (az adatokat tartalmazó entitások) jobb alapot biztosítanak egy szoftverrendszer megtervezéséhez. A cél az volt, hogy nagy fejlesztési projekteket könnyebben lehessen kezelni, így csökken az elhibázott projektek száma.

[szerkesztés] A Java szerepei

A Java szoftver három igen fontos szerepet tölt be:

  1. mint programozási nyelv;
  2. mint középszint;
  3. mint platform.

A legfontosabb része a Javának a Java virtuális gép (Java Virtual Machine – JVM). A JVM mindenütt való jelenléte (szinte mindenféle berendezés, chip és szoftvercsomag) elősegíti a nyelvet, hogy középszintként és platformként egyaránt működjön. Ugyanakkor a nyelv „platformfüggetlen” is, mert a Java virtuális gépek interpretálják a szabványos Java gépi kódot. Lényegében ezt azt jelenti, hogy egy PC-n megírt Java program ugyanúgy fog futni egy javás telefonon is, minden változtatás nélkül. Innen jön az írd meg egyszer, futtasd akárhol kifejezés. Ugyanakkor ez hatalmas költségmegtakarításokat eredményez, mert a kódot csak egyszer kell megírni.

[szerkesztés] Platformfüggetlenség (hordozhatóság)

A második tulajdonság, a platformfüggetlenség azt jelenti, hogy a Javában íródott programok hasonlóan fognak futni különböző hardvereken. Ezt úgy lehet megvalósítani, hogy a Java fordítóprogram csak egy úgynevezett Java gépi kódra fordítja le a forráskódot, ami aztán futtatva lesz a virtuális gépben, amely lefordítja az illető hardver gépi kódjára. Továbbá, szabványos könyvtárcsomagok léteznek, amelyek lehetővé teszik az illető hardver sajátságosságait (grafika, szálak és hálózat) egységes módon.

Vannak olyan Java fordítóprogramok, amelyek natív gépi kódra fordítják le a forráskódot, ilyen például a GCJ, így valamelyest felgyorsítják a futtatást, de ugyanakkor a lefordított program elveszti hordozhatóságát.

A Sun Microsystems licence ragaszkodik a különböző Java kivitelezések összeférhetőségéhez. Egyes cégek, mint például a Microsoft, mégis platformfüggő sajátságokat adtak a nyelvhez, amire a Sun keményen reagált: beperelte a Microsoftot (az amerikai bíróság 20 millió dollár kártérítésre és a sajátos tulajdonságok visszavonására kötelezte a céget).

Válaszként a Microsoft kihagyta a Java rendszert a jövőbeli termékekből és Windows-változatokból. Ez azt jelenti, hogy az Internet Explorer webböngésző alapváltozataiból hiányzik a Java, így az olyan weboldalak, amelyek Javát használnak, nem fognak helyesen megjelenni. A Sun és más cégek ingyenesen letölthetővé tették a JVM rendszert azon Windows-változatok számára, amelyekből a virtuális gép hiányzik.

A hordozhatóság megvalósítása technikalilag nagyon bonyolult, a Java esetében is sok vita volt; az „írd meg egyszer, futtasd bárhol” szlogenből „írd meg egyszer, hibakeress mindenhol” lett.

Ennek ellenére a Java sikeres lett a servletek és Enterprise Java Beans kiszolgálóoldali programozásokban.

[szerkesztés] Biztonságos távoli futtatás

A Java rendszer volt az első, amely lehetővé tette a távoli gépeken való futtatást. Egy kisalkalmazás futtatható volt a felhasználó gépén (letöltve a Java kódot egy HTTP kiszolgálóról). A kód egy biztonságos környezetben fut, amely nem teszi lehetővé a „rossz szándékú” kód futtatását; a kiadók kérhetnek olyan tanúsítványokat, amelyeket digitálisan aláírnak, tanúsítva, hogy a kisalkalmazás biztonságos, lehetővé téve ennek kilépését a biztonságos környezetből (ugyancsak a felhasználó felügyelete alatt).

[szerkesztés] A nyelv

[szerkesztés] A klasszikus „Helló Világ!” Javában

A következő egyszerű program kiírja azt, hogy „Helló Világ!” az alapértelmezett kimeneti eszközre (ami általában a képernyő, de lehet egy fájl vagy bármi más is).

public class HelloVilag {
    public static void main(String[] args) {
        System.out.println("Helló Világ!");
    }
}

[szerkesztés] Vezérlés

[szerkesztés] Ciklusok

while (logikai kifejezés) {
    utasítás(ok)
}


do {
    utasítás(ok)
} while (logikai kifejezés);


for (inicializálás ; kilépési feltétel ; adalékos feltétel) {
    utasítás(ok)
}

[szerkesztés] Feltételes utasítások

if (logikai kifejezés) {
    utasítás(ok)
}


if (logikai kifejezés) {
    utasítás(ok)
} else {
    utasítás(ok)
}

Elegendő else if utasításokkal bármilyen komplex ha-akkor-szerkezetet ki lehet építeni.

if (logikai kifejezés) {
    utasítás(ok)
} else if (logikai kifejezés) {
    utasítás(ok)
} else if (logikai kifejezés) {
    utasítás(ok)
} else {
    utasítás(ok)
}
switch (egész kifejezés) {
    case konstans egész kifejezés:
         utasítás(ok)
         break;
    …
    default:
         utasítás(ok)
         break;
}

[szerkesztés] Kivételkezelés

try {
    utasítás(ok)
} catch (kivételtípus) {
    utasítás(ok)
} catch (kivételtípus) {
    utasítás(ok)
} finally {
    utasítás(ok)
}

[szerkesztés] Feltétel nélküli ugróutasítások

A Java nem támogatja a goto utasítást, mivel ennek használata pongyola kódot eredményez. Nagyon ritkán mégis szükség van a goto-ra, a Java lehetővé tesz alternatív megoldásokat. A goto fenntartott szó és nem használható azonosítóként.

[szerkesztés] Korai kilépés a ciklusokból

A Java nyelv két utasítást is ad a ciklusból való kilépéshez. A

continue;

utasítás befejezi a folyamatban levö ismételgetést és egy újabbat kezd (ugyanúgy viselkedik, mint a ciklus elejére ugró goto).

Hasonlóan, a

break;

utasítás teljesen kilép a ciklusból, és több ismételgetést nem hajt végre. A hatás ugyanaz, mint egy goto utasítás a cikluson kívülre.

A Java break és continue utasításai sokkal hatásosabbak, mint a C és C++ hasonló nevű utasításai, mert képesek egy többszintű ciklusból is kilépni (csak annyi a teendő, hogy megcímkézzük a ciklust és hozzátoldjuk a break vagy continue utasításokhoz. Ugyanezt csak goto utasítással lehet elérni C-ben és C++-ban).

Példa:

 kulso: while (true) {
    belso: while (true) {
        break;             // kilépés a legbelső ciklusból
        break belso;       // ugyancsak kilépés a legbelső ciklusból
        break kulso;       // kilépés a legkülsö ciklusból
    }
}

[szerkesztés] Korai kilépés az eljárásokból

A

return;

utasítás befejez egy eljárást.

A

return aErtek;

visszaad a hívó eljárásnak egy értéket (aErtek) is visszatéréskor.

[szerkesztés] Alapvető adattípusok

Változó típusa Leírás
byte 8 bites előjeles egész
short 16 bites előjeles egész
int 32 bites előjeles egész
long 64 bites előjeles egész
float 32 bites egyszeres lebegőpontosságú

(IEEE 754 szabvány)

double 64 bites kétszeres lebegőpontosságú
(IEEE 754 szabvány)
char 16 bites Unicode-karakter
boolean logikai érték (igaz / hamis)

A tömbök és karakterláncok nem alapvető adattípusok, hanem objektumok.

[szerkesztés] Karakterek

A Java a 16 bites Unicode kódolást (az UTF-16-ot) használja. Ez tartalmazza a szabványos ASCII-karaktereket, de ugyanakkor tartalmazza más nyelves karakterkészletét is (pl: görög, ciril, kinai, arab stb.). A Java programok mindezeket a karakterkészleteket képesek használni, habár a legtöbb szerkesztőprogram csak a hagyományos ASCII karakterkészletet támogatja.

[szerkesztés] Interfészek és osztályok

Az egyik fontos tulajdonsága a Javának az, hogy lehetővé teszi interfészek létrehozását, amit az osztályok megvalósítanak. Példa egy interfészre:

public interface Torolheto {
   public void torol();
}

Ez az interfész csak annyit határoz meg, hogy minden, ami törölhető biztosan rendelkezik egy eljárással: torol(). Ennek a fogalomnak több haszna is van, mint pl.:

public class Fred implements Torolheto {
   //Itt kötelező megvalósítani a torol() eljárást
}

Más osztályban lehetséges a következő:

public void torolMindent(Torolheto[] lista) {
     for (int i = 0; i < lista.length; i++)
          lista[i].torol();
}

Ez a megoldás mintegy kompromisszumként született. A Java tervezői elhatározták, hogy a nyelv nem fog többszörös öröklödést tartalmazni, de az interfész szimulálhatja ezt.

[szerkesztés] Ki- és bemenet

A következő kódrészlet bemutatja egy karakter beolvasását a felhasználótól, majd ennek kiíratását:

public static void main(String[] args) throws java.io.IOException {
   char a;
   System.out.println("Üdvözlöm! Kérem írjon be egy betűt.");
   a = (char) System.in.read();
   System.out.println("A beütött betű: " + a);
}

[szerkesztés] Objektumorientált programozás megvalósítása

Az alaposztály megadása extends segítségével:

class Alaposztaly {
   int i;
   void Eljaras(){
      i++;
   }
}

class Szarmaztatott extends Alaposztaly {
   //eljaras felulirasa
   void Eljaras() {  
       i+=2;
   }
}

A származtatáskor az alaposztály minden elemét átvette a származtatott osztály, de az Eljárás metódusát felüldefiniáltuk.

Alaposztály metódusok hívása a super segítségével

class Szarmaztatott extends Alaposztaly {
   //Konstruktor
   Szarmaztatott(int i){
       //Alaposztaly konstruktoranak atadjuk a parametert
       super(i);
       Masik_valtozo = i;
   }
}

[szerkesztés] A Java története

A Java nyelv története összeforrt a Sun Microsystems Java fordítójával és virtuális gépével és az ezekhez kapcsolódó fejlesztői programcsomaggal (Java SDK vagy újabban JDK – Java Development Kit), amely a Java nyelv és ahhoz kapcsolódó szabványok standard implementációjának tekinthető. A nyílt szabványt képviselő, de zárt forráskódú Java eszközök miatt sok kritikát kapott a Sun a Free Software Foundationtól. Valószínűleg ennek is köszönhető, hogy a Sun Microsystems 2007-ben a Java SE (Standard Edition), Java ME (Micro Edition) és a Java EE (Enterprise Edition) GPL licenc alatt nyílt forráskódúvá, azaz szabad szoftverré teszi, ahogy ez már részben meg is történt a Java EE esetében, nem GPL-kompatibilis licenccel.

[szerkesztés] Változatok

  • 1.0 (1996) – ez volt az első verziója a Java virtuális gépnek és az osztálykönyvtáraknak.
  • 1.1 (1997) – itt jelent meg először a belső osztály fogalom, ami lehetővé teszi több osztály egymásba ágyazását.
  • 1.2 (1998) – ez a verzió számottevő mérföldkö volt a nyelv evolúciójában. Hogy ezt kihangsúlyozza, a Sun hivatalosan Java 2-nek nevezte el.
  • 1.3 (2000) – csak néhány kisebb változtatást végeztek el rajta.
  • 1.4 (2002) – ez ma a legelterjedtebb változat.
  • 5 (2004) – belső számozás szerint 1.5, kódneve Tiger, újdonsága pl. a továbbfejlesztett ciklusmegoldások, az adattípusok automatikus objektummá alakítása (autoboxing), a generic-ek.
  • 6 (2006) – belső számozás szerint 1.6.0, kódneve Mustang. Decemberben jelent meg a végleges változat kiterjesztett nyomkövetési és felügyeleti megoldásokkal, szkriptnyelvek integrációjával, grafikusfelület-tervezést támogató kiegészítésekkel.
  • 7 (2008?) – kódneve Dolphin

[szerkesztés] Kapcsolódó szabad szoftverek

[szerkesztés] Külső hivatkozások


Főbb programozási nyelvek (továbbiak) +/-

Kereskedelmi: ABAP | Ada | Awk | C | C++ | C# | COBOL | Delphi | Fortran | Java | JavaScript | Lisp | Objective-C | Perl | PHP | PL/SQL | Python | SAS | sh | SQL | Visual Basic

Oktatási: Eiffel | Haskell | Logo | SML | Pascal | Prolog | Scheme | Smalltalk

Történelmi: ALGOL | APL | BASIC | Clipper | MUMPS | PL/I | Simula

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu