Kezdeni programozás Java program első hello world
Próbáld megérteni, hogy miért Java van kiválasztva modern design, mint a mag programozási nyelv.
C-szerű szintaxis *
Abban az időben, amikor megteremtette a Java nyelvet, a legnépszerűbb programozási nyelv a C ++. Annak érdekében, hogy „megnyerni” új Java programozók, úgy döntöttek, hogy azt olyan hasonlít a C ++, figyelembe talán a legjobbat.
Java és C ++ nem az egyetlenek, akik hasonló szintaxis. C ++ volt az őse a nyelv a C (C), mert minden nyelvet használnak, mint a szintaxis nevű B-szerű, és annyi (Wikipedia: C-család).
Tehát, ha már ismeri legalább az egyik következő nyelveken, akkor rengeteg pontot, merevítések és zárójelben Java úgy tűnik, hogy valamit sokáig ismerős és megszokott. Másrészt tanulmányozza a Java szintaxist sokkal könnyebb lesz megérteni és más nyelveken a család.
* Szintaxis - egy sor szabályt, amelynek meg kell felelnie a szöveget a program. Egy egyszerű módja: ahogy a program úgy néz ki. Nehezebb - a wiki.
Egy általános célú nyelv
Célja szerint programozási nyelvek:
- Speciális (a probléma megoldásának egy adott ágazatban, például a Fortran matematikai SQL adatbázisok.);
- Általános célú (megoldásához széles körű feladatokat minden iparágban. Például a C ++, Java, C #).
Java utal a második típusú, egy általános célú nyelv, amely felírható szinte bármilyen programot. A mai napig a Java program létrehozott bármilyen szintű összetettség a programozás az otthoni készülékek és a mobil eszközök (Java ME), az összetett nehéz szolgálat (Java EE).
- Sokoldalú, megoldja minden probléma
- rosszabb külön ága (a sebesség és a könnyű használat) a szaknyelv
Az objektum-orientált
Minden számítógépes programok próbálják leírni a folyamatokat világunk a processzor parancsokat. Mivel a számítógép nem tud semmit a tárgyak világunk, a programozó mindig „lefordítani” mind a számok nyelvén és utasításokat. Nem volt egészen a 70-es, míg a megjelenése az objektum-orientált programozási paradigma. Segítségével lehetővé vált a programozási szintjét tárgyak a világban, és nem a számok szintjén a számítógépek világában.
Például itt van, hogy a leírás a két táblázat formájában nem tárgy:
- a hossza az első táblázat: 1200mm
- szélessége az első táblázat: 500mm
- magassága az első táblázat: 1000mm
- második táblázat hossza: 1300mm
- szélessége a második szakasz: 600 mm
- a magassága a második táblázat: 1100mm
nincs kapcsolat a paraméterek, kivéve a nevüket. Ez könnyen hibázik megpróbálja kiszámítani a területet a táblázat: szaporodnak a hossza az első táblázat a szélessége a második.
Egy példa objektum-orientált leírása:
Ebben az esetben már nem működnek eltérő paraméterek és az egész tárgy: az első és a második asztal asztal.
Programok írt objektum-orientált nyelvek lassabb, és ez volt a fő oka annak, hogy ezt a paradigmát vált népszerűvé csak a '90 -es években, amikor a »vas« kész volt erre.
Java, mint szinte az összes modern nyelvek, egy objektum-orientált nyelv, amely elég egyszerű, hogy szimulálja a valós folyamatokat, és élvezze minden előnyét az objektum-orientált megközelítés.
- OOP használják számos más programozási nyelvek
- széles körben alkalmazza a kivételi
- könnyen modellezni a valós világ objektumai
- Ez további vizsgálatot igényel, és a fejlesztés az elvont gondolkodás
funkcionális
Amikor szükség van, hogy csökkentse az átfutási idő a program, van két nyilvánvaló módon:
- Optimalizálja a programban;
- Nagyítás processzor frekvencia.
Az optimalizálás, már a következő problémák:
- optimalizálja számlák valamennyi program;
- van egy logikai határ, amelyen túl lehetetlen optimalizálni.
processzor gyorsulás megoldja ezeket a problémákat, és felgyorsítja a végrehajtás valamennyi program egyszerre.
Hála Moore-törvény, a világ kifejlesztett egy második út - gyorsított processzorok. A törvény kimondja, hogy minden második évben a processzor frekvencia szükséges megduplázását. De egy nap, Moore-törvény leállt és megállt a növekedése frekvencia. És többé nem kapja meg a szükséges gyorsulást a programokat. Egész azonnal vádlott Moore azt mondta, hogy még mindig nem érti, és a törvényt módosították nem frekvencia megduplázódik, és a tranzisztorok száma!
Így az elmúlt években, a gyakorisága feldolgozók nem növeli, és a tranzisztorok száma növekszik. Tranzisztorok költenek CPU maghoz. De ha megnézi a fent említett két módon, hogy gyorsítsák fel a program - nincs értelme, hozzátéve magot. Ahhoz, hogy a program lehet gyorsítani a további magok - képesnek kell lennie arra, hogy végre önálló részből áll.
De ez nem olyan egyszerű: minden darab a programok függnek egymástól függenek, megosztott adatok (különösen, ha beszélünk objektumorientált programozás).
És itt jön a támogatás a funkcionális programozás, amely minimálisra csökkenti (és ideális esetben megszünteti) használata közös adatokat, ami megkönnyíti futtatni a különböző magokat.
Az objektum-orientált paradigma, azt 20 éve, hogy menjen az elmélettől a tömeges használata. Ismerve, hogy milyen gyorsan a világ változik most, azt gondolhatja, hogy ez egy kivétel a szabály alól, és ezért minden új gyorsabban és készségesen.
Azonban a funkcionális programozási paradigma sokkal tovább tartott, mint az objektum-orientált. Ez az első alkalom ebben a paradigmában ben vezették be a 30-as években, de a széles tömegek funkcionális programozás kezd belépni csak napjainkban.
Van egy teljesen működőképes nyelvek (Haskel, Erlang) és hibrid - kombinálásával objektum-orientált és funkcionális megközelítések (Scala, C ++).
Kezdve a kibocsátás Java 8 szerez mechanizmusai funkcionális programozás (például hivatkozásokat függvények és a lambda kifejezéseket), amely megkönnyíti, hogy hozzon létre programokat lehet futtatni több magot egyszerre.
- elérhető új programozási technikák
- könnyű létrehozni képes programok használata több processzormag
- Ez további vizsgálatot igényel, és fejlődése a funkcionális (matematikai) gondolkodás
Gépelés: szigorú, statikus, tiszta
erős gépelés
Ítélve a neve, ha szigorú gépelés -, hogy van néhány szabály, amit nem sértheti.
Példa (meg kell érteni, hogy a sorok számát és - a két különböző típusú adatok):
Két további, két sorban a számok, függetlenül a gépelési minta mindenütt egyformán jelentkezik:
A különbség az lesz, amikor (talán tévesen) megpróbálja felvenni a számot, és a sort:
5 + "5" =. (10 vagy "55")
Erősen típusos nyelv fogja mondani, hogy ott lapul egy hiba, és arra kényszeríti, hogy mindannyian jól vezet egyetlen típus.
Nem erősen típusos kezd csalni: ő üdülőhelyek további szabályokat abban az esetben nem egyezik típusokat. Attól függően, hogy ezeket a szabályokat az alábbi lehetőségek közül kerül kiválasztásra:
- Egy sor az „5” lenne a számot, és az lesz az eredmény 10 (add egész szám)
- Az „5” lesz egy string, és az eredmény lesz „55” (string összefűzés)
Kiderült, hogy míg nem erős gépelési tévedésből próbáljuk végrehajtani egy műveletet inkompatibilis adattípusok és attól függően, hogy a „kiegészítő szabályok”, hogy a különböző eredményeket :. 10 vagy „55”
A Java segítségével szigorúan lehetőség, amely előnyben részesíti, hogy jelentse a hibát, és kap a programozó explicit leadott valamilyen, elkerülve ezzel egy sor „kiegészítő szabályok”. abban az esetben, ha a típus nem egyezik.
- Nincs további szabályok automatikus típusátalakítások: nem kell tudni, és nincs hiba megfelelő konverziós
- megértése gépelés gyorsan jön
- minden szükséges változtatásokat kell végrehajtania világosan
statikus gépelési
Mivel a változók típusát Java határozzuk statikusan fordítási időben, akkor lehet ellenőrizni, ha ezeket a típusokat használnak. Például, ha megpróbáljuk elküldeni az autó, hogy az állatorvos - Java megmondja, mi az állatorvos nem fogadja az ilyen típusú objektumokra. Ezért tapasztaljuk, hogy a hibát, amikor megpróbálja lefordítani a kódot, ahelyett, ha az alkalmazás futtatásához a szerveren.
Így elkerülhető Java osztály hibák (inkompatibilitás típusú hibákat), mint azokat felismerik fordításkor a statikus gépelni.
Persze, hogy manapság senki sem ír kódot Notepad, és nem fordul a parancssorból - mindez képes modern IDE fejlesztőeszközök (IDEA, Eclipse, NetBeans). És mindezen IDE aktívan használja azt a tényt, hogy a statikus gépelést, és nézze meg a hiba, még mielőtt megpróbáljuk lefordítani a kódot.
Másik előnye a statikus gépelési hogy az IDE képes arra utalnak, milyen módszereket és tulajdonságok az objektumot. Ez nagyban megkönnyíti a fejlesztés és a képzés.
- Hiba összeegyeztethetetlen típusú rájövünk fordításkor (az IDE írásakor kód), de nem a program során
- IDE ismerete típusú adatok azt sugallják, hogy milyen műveleteket végezhet vele (nagyon hasznos, különösen a korai szakaszában feltárása a nyelv)
- annak szükségességét, hogy meghatározzák a fajta self
explicit gépelés
Ahhoz, hogy egy változót a Java kifejezetten meg kell adnia annak típusát. Például, a i változó értéke egész szám típusú deklarált a következőképpen:
Ebben az esetben ugyanis, Java képes következtetni a változó típusát i, anélkül, mi int. Nem lenne elég írni:
- annak szükségességét, hogy egyértelműen jelzi, hogy milyen típusú (mikro-probléma)
Cross-platform
Ahhoz, hogy az írásbeli kérelmet futtatni a különböző platformok (Linux, Windows, Android), akkor át kell alakítani (lefordított) kompatibilis ezzel a platform a processzor utasításokat.
Java kijelenti, hogy nincs szükség annak programokat. Mivel a mi érjük el?
Kód Java nyelven írt, összeállított nem a processzor utasítások (mint a legtöbb összeállított nyelven), és egy speciális bájtkódot. Ez a bájt kód fut a Java-gép - egy speciális program, amely képes átalakítani bájtkódot utasításokat a processzor.
Így a platform nem függ a kódot, és a Java-gép. Telepítse a megfelelő Java-gép minden platformra, a kód működni fog egyformán mindegyik.
- programot futtatni a különböző rendszerek
- teljesítmény szenved (enyhén)
A szemétgyűjtő
Memória. Ez nem gumi. A folyamat során a program létrehoz objektumokat túlzsúfoltság memóriát. A programozó válláról a terhet, hogy figyelemmel kíséri ezeket a tárgyakat, és amikor szükség van rájuk -, hogy távolítsa el őket. Nem könnyű feladat. Ha valami rosszul - által alkotott memóriavesztés, és az alkalmazás elkerülhetetlen (ez idő kérdése) leáll egy hibaüzenettel a kimerültség az összes rendelkezésre álló memóriát.
Az út mentén, a kollektor megoldja még egy probléma - memória töredezettség. Dióhéjban a probléma lényege a következő: van egy darab memória sejtek 10, 5 foglalkoztatják őket, és az 5 ingyenes. Azt akarod, hogy írjon egy teljes objektum 5 sejtek a memória - de nem tehetem. mert immunsejtek nem elrendezve egy sorban, és az első három, és két végén.
- Nem kell, hogy nyomon követhesse a tárgyak és dönt a memória tisztító
- nincs probléma a memória töredezettség