2. dia Java technológia áttekintés Flashcards
Mint programozási nyelv
90-es évek, James Gosling
Általános célú, konkurens, osztályalapú, objektumorientált programozási nyelv.
Rokona a C-nek és C++-nak.
Erősen típusos és statikus típusos nyelv.
(Bájt kód - fordítás, VM - végrehajtás)
Java paradigmák
Objektumorientált (Osztályalapú)
Generikus
Funkcionális
Konkurens
Refletív
Strukturált
Java virtuális gép
Absztrakt számítógép saját utasításkészlettel.
Csak a bináris class állományformátumot ismeri.
Java platform alapköve, felelős a függetlenségért, kis méretű lefordított kódokért, és a rosszindulatú kódok ellen véd.
Szabad, nyílt forrású:
Hot Spot (Open JDK)
Eclipse OpenJ9
Nem szabad:
PTC Perc
Azul Platform Prime
Java Platform
Olyan szoftver platform, amely más hardver platformokon fut, és amelynek az álábbi két fő komponense van:
- JVM: Java virtuális gép
- API: Java alkalmazásprogramozási interfész
Milyen Java platformok léteznek?
Java Platform, Standard Edition (Java SE)
Java Platform, Entreprise Edition (Java EE)
Java Platform, Micro Edition (Java ME)
Java card
Java SE
Java platform asztali és szerver számítógépekre történő alkalmazásfejlesztéshez.
Implementáció két fajtája:
Java futtató környezet : JRE
Java fejlesztői készlet : JDK
(JDK 11-től nincs önállő JRE)
Java futtató környezet JRE
A Javában írt programok végrehajtására szükésges állományokat tartalmazza:
JVM
osztálykönyvtárak
további állományok…
Java fejlesztői készlet JDK
Fejlesztői környezet alkalmazások és komponensek a a Java programozási nyelven történő készítéséhez.
Tartalmaz egy JRE-t valamint, fejlesztéshez, teszteléshez és monitorozáshoz alkalmas eszközöket.
Nem szabad implementációk:
Oracle JDK, Azul Platform Core
Szabad és nyílt forrású implementációk:
Oracle OpenJDK, Amazon Corretto, Azul Zulu Builds of OpenJDK, Microsolf Build of OpenJDK
Java EE
API-t és futtató környezetet biztosít többrétegű, skálázható , megbízható szerver oldali alkalmazások fejlesztéséhez és futtatásához.
Java SE platformra készült.
Java Community Process (JCP)
1998-ban bevezetett a Java-hoz kötődő technológiai specifikációk, referecnia implementációk és tesztkészletek fejlesztésére és felülvizsgálatára.
Bárki résztvehez díjmentesen.
JSR a specifikációk indítványozása.
Java Enchancement Proposal (JEP)
Folyamat JDK fejlesztésére irányuló javaslatok kezelésére, OpenJDK projektben.
JDK kiadásokhoz egy javaslatokból álló, rendszeresen frisstett lista.
Előzetes lehetőségek
Lehetővéteszi a Java nyelv, VM vagy a Java SE API új lehetőségének kipróbálását, annak érdekében, hogy ezek a lehetőségek véglegesek legyenek-e.
Kapcsolódó programzási nyelvek és platformok
JavaFX
Android
Apache Groovy
Kotlin
GraalVM
JavaFX
A Java SE-n alapuló platform olyan vastag kliens alkalmazások készítéséhez, melyek következetesen működnek különféle eszközökön.
JDK 11-ben eltávolításra került, helyét az OpenJFX hivatott betölteni, amely egy külön letöltésként érhető el.
OpenJFX
Platformok: Linux, Windows, macOS
Fejlesztői eszközök:
- Eclipse Toolong for JavaFX
- Gluon Scene Builder
- WebFX
Android
Google altal feljlesztett, Linux kernelre épülő mobil operációs rendszer és szoftver platform.
Alkalmazásokat C++, Java, Kotlin és Rust nyelven írhatunk. Elsődleges nyelve a Kotlin.
Fordítás DEX bájtkódra történik, amelyet aztán az Android Runtime gépi kódra fordít.
Fejlesztő OHA (Open Handset Alliance)
Apache Groovy
OOP a Java platformhoz, amely simán intengrálható bármilyen Java programmal.
Opcionálisan típusos és dinamikus, de támogatja a statikus típuskezelést és fordítást.
Java bájtkódra fordítódik.
Mire jó?
Szkriptek, szakterület-specifikus nyelvek létrehozása, futásidejű és fordítási idejű metaprogramozás, valamint funkcionális programozás.
Kotlin
Általános célú, statikusan típusos.
OO és funkcionális paradigmát is támogat.
Tetszőleges fejlesztéshez használható: szerver/kliens oldali webfejlesztés, Android alkamazásfejlesztés..
Java bájtkódba vagy JavaScripre is fordítható, valamint fordítható a támogatott platformokon futó natív binárisokká is.
GraalVM
Nagy teljesítményű JDK disztribúció Java és más nyelveken írt programok gyors végrehajtására.
Nativ Image lehetőséggel platform-specifikus natív végrehajtható binárissá fordítja a bájkódot. Ez 100xx gyorsabb és erőforrásokhatékonyabb.
Több nyelvet támogat, és több nyelven írt kódok fejlesztését is lehetővéé teszi.
GraalVM (Truffle)
Segítségével saját nyelveket implementálhatunk egy szintaxisfa értelmező segítségével.
Segíti a GraalVM-en hatékonyan futó alkalmazások implementálását.
Lehetővé teszi programnyelv-agnosztikus eszközök (Hibakeresők, profilozók) fejlesztését.
SDKMAN!
Szoftverfejlesztő készletek párhuzamos verzióinak kezelésére készült eszköz.
Nem követel meg rendszergazdai jogosultságot.
SDK-k telepítésére és kezelésére alkalmas.
JShell
Java deklarációk, utasítások és kifejezések interaktív kiértékeléséhez készült parancssori eszköz.
Read-Evaluate-Print Loop eszköz (REPL).
Gyakran használt csomag felső szintű típusai alapértelmezetten importálásra kerül.
Elhagyható az utasításokat záró pontosvessző karakter.
Automatikus kiegészítés.
Kereshető és szerkeszthető történet.
Az begépelt kódrészleteket snippetsnek nevezzük.