Java jako programovací jazyk
-
Je jazykem "3. generace" (3GL), imperativním jazykem vysoké úrovně
-
Je jazykem univerzálním; není určen výhradně pro specifickou aplikační oblast.
-
Je jazykem objektově-orientovaným, výpočet je realizován jako volání metod objektů (zasílání zpráv objektům).
-
Ideovým předchůdcem Javy je C
(a evt. Delphi) (C
zbaveno zbytečností a nepříjemností). -
Je jazyk významně jednodušší než C++, komplikovaností srovnatelný s jazykem C#, jenž se Javou inspiroval.
Java v budoucnu
-
Pro tradiční typy serverových podnikových aplikací (IS) zůstává Java (Enterprise Edition) klíčovou platformou spolu s .NET.
-
Perspektivním směrem vývoje je zachování Java platformy (JVM, stávající knihovny, aplikace, aplikační prostředí).
-
Rychle se vyvíjejí skriptovací jazyky na této platformě (Groovy, JRuby, Jython…).
-
Objevují se nové jazyky na javové platformě (Scala).
Proč Java
-
Java je jazyk pro vývoj a běh jednoduchých i rozsáhlých aplikací.
-
Vývoj je efektivnější než na jejich předchůdcích (C++) a výsledné aplikace "běží všude".
-
Silnou typovaností, běhovou bezpečnostní kontrolou, stabilními knihovnami vč. open-source a rozsáhlým souborem dobrých praktik nabízí aplikacím velmi vysokou robustnost.
-
Nezavádí zbytečnosti a vede ke správným a dále uplatnitelným návykům.
-
Je velmi perspektivní platformou pro vývoj open-source i komerčního SW, mj. pro extrémně velké množství volně dostupných knihoven.
Z toho plyne, že…
-
Co se naučíme v Javě, v C# jako když najdeme.
-
.NET/CLI jako platforma je silně ovlivněná Java EE.
-
Rovněž moderní skriptovací jazyky (Groovy zcela, Ruby a Scala se inspirovaly) koncepčně i syntakticky vychází z Javy.
Java jako správný vzor
Java podporuje vytváření správných návyků v objektovém programování a naopak systematicky brání přenosu některých špatných návyků z jiných jazyků.
-
Začínat v imperativním paradigmatu ihned se slabě typovaným (např. skriptovacím) jazykem není vhodné, absentuje zde překladová typová kontrola, chyby se projeví typicky později.
-
Je lépe nejdříve dobře zvládnout klasický (silně typovaný) jazyk, navyknout si na omezení a kontroly, vytvořit si styl, a pak snadno přejít.
Další charakteristiky
-
Program v Javě je meziplatformně přenositelný na úrovni zdrojového i přeloženého kódu.
-
Je to umožněno tím, že přeložený javový program běží v tzv. Java Virtual Machine (JVM).
-
Zdrojový i přeložený kód je tedy přenositelný mezi všemi obvyklými platformami (UNIX, Windows, Mac OS X, ale také sálové počítače, minipočítače typu IBM AS/400 apod.).
-
Při respektování omezení mobilních zařízení (smartphones) je Java použitelná i tam (viz mnohé mobilní hry), byť dnes v podstatě úplně vytlačená Androidem.
-
Tedy všude tam, kde existuje příslušná JVM.
Java jako běhové prostředí
Kód je při běhu dobře zabezpečen: - Je možné velmi jemně nastavit úrovně přístupu k hostitelskému systému pomocí tzv. Security Manageru (knihu možné pročíst i z webu!). - Je možné ověřovat před spuštěním elektronický podpis kódu.
Java pro programátora (produktivita)
-
jazyk vhodný pro efektivní (rychlé) psaní přehledných programů, mj. také díky dokumentačním možnostem a výrazným prosazením konvencí pro zápis;
-
v průměru vyšší produktivita programátorské práce v Javě než v C++;
-
nesčetné množství zdarma dostupných knihoven pro různorodé aplikační oblasti, např. na SourceForge a tisících dalších místech;
-
k dispozici je řada kvalitních vývojových prostředí (i zdarma) - NetBeans, Eclipse, IDEA, BlueJ - výukové vývojové prostředí — používáme v tomto předmětu na přednáškách
Java pro programátora (výhody oproti C++)
Konkrétní možnosti:
-
V Javě se dobře píší vícevláknové aplikace (multithreaded applications).
-
Java má automatické odklizení nepoužitelných objektů (automatic garbage collection).
-
Java je jednodušší než C++ (méně syntaktických konstrukcí, méně nejednoznačností v návrhu), což zlepšuje čitelnost a redukuje riziko chyb.
Hlavní domény Javy (1)
-
Škálovatelné výkonné aplikace běžící na serverech — Java Enterprise Edition
-
Přenositelné desktopové, a to i grafické/okénkové (GUI) aplikace
-
Výukové účely (nahradila Pascal jako referenční jazyk)
-
Aplikace na přenosných a vestavěných (embedded) zařízeních — Java Micro Edition
-
Aplikace na chytrých kartách (smart cards) — Java Card technology
Hlavní domény Javy (2)
-
Webové aplikace: jak back-end (Java EE), tak front-end (JavaFX)
-
Velké podnikové (informační) systémy (Java EE)
-
Integrační technologie (propojování systémů) (Java EE)
Javová platforma
Javovou platformu tvoří:
-
Java Virtual Machine
-
Java Core API (základní knihovna tříd)
-
překladač (přístupný např. příkazem javac) a další vývojové nástroje
Java je dána
-
definicí jazyka — The Java® Language Specification, Java SE 8 Edition — syntaxe a sémantika jazyka
-
popisem chování JVM — The Java Virtual Machine Specification, Java SE 8 Edition
-
popisem Java Core API — Java™ Platform, Standard Edition 8 API Specification
Vývoj Javy
-
Nejrychleji se vyvíjí Java Core API.
-
Chování JVM se mění např. pokud se objeví bezpečnostní "díra" nebo nelze-li dosáhnout požadované změny chování pomocí modifikace Java Core API.
-
Daleko konzervativnější je samotný jazyk - mění se zřídka, ale přece: např. Java2, v1.4 přidala nové klíčové slovo
assert
, Java 5.0 (postaru 1.5) obohacuje jazyk oenum
, generické typy, anotace a další rysy. Java 7 přináší další spíše drobné změny jazyka, např. v ošetřování výjimek, uvolňování systémových zdrojů. Java 8 ale také zásadnější prvky (lambda-výrazy).
Specifikace a implementace Javy
-
Specifikace Javy (tzv. "Editions") - např.: Java 2 Standard Edition, 1.4 nebo Java Standard Edition 6
-
Implementace Javy ("Development Kits" nebo "Runtime Environments"), např.: Java Software Development Kit, 6.0 — obsahuje vývojové nástroje.
-
_ Java Runtime Enviroment, 6.0_ — obsahuje jen běhové prostředí pro spouštění hotových přeložených programů.
Verze Javy - starší konvence
-
Verze Javy byly až do verze 5.0 označovány jako "Java 2, vX.Y, tedy následovně:
-
tzv. major číslo, např. Java 2, v1.4
-
tzv. minor číslo, např. Java 2, v1.4.2
-
změnu minor (třetího) čísla doprovází jen odstraňování chyb
-
při změně major (druhého) čísla se může měnit Core API a někdy i jazyk
-
ke změně prvního čísla dochází až s verzí 5 (postaru 1.5) - tj. s celkovou změnou pojmenovávacího schématu
Aktuální verze
Stav k září 2015:
-
Java Standard Edition 8 (u zákazníků s Long Term Support pokračují i SE 6 a 7)
-
je stabilní verzí pro všechny platformy.
-
U Java 7 běžná podpora skončila dubnem 2015.
-
Aktuální informace najdete vždy na webu Oracle Oracle Technetwork/Java.
-
K předpokládanému vývoji existuje Oracle roadmap
Licence k použití (a redistribuci) Javy
-
používání Javy pro běžný vývoj (i komerční) je zdarma, licenční ujednání Java SE for Business License
-
distribuce vyvíjí Oracle i další výrobci (např. IBM) a tvůrci open source — jako OpenJDK
Stažení distribuce Oracle
-
http://www.oracle.com/technetwork/java/index.html pro Windows, Solaris, Linux, Mac OS X
-
Lze stáhnout jak samotné vývojové prostředí (JDK), jen běhové prostředí (JRE) nebo JDK v balíčku s IDE (Integrated Development Environment) NetBeans (nyní NetBeans 8.0).
-
Dokumentace se stahuje z téhož místa, ale samostatně. Obvyklejší je číst z webu — pozor na verzi Javy, jejíž dokumentaci čteme!
Typy distribucí Javy (Oracle)
Lze stáhnout:
-
samotné vývojové prostředí (JDK), např. Java SE 8 JDK
-
jen běhové prostředí (JRE), např. Java SE 8 JRE: to nám tady nestačí, chceme vyvíjet
-
JDK v balíčku s grafickým (okénkovým) integrovaným vývojovým prostředím (IDE, Integrated Development Environment) NetBeans.
Obsah vývojové distribuce Javy
-
Vývojové nástroje (Development Tools) v
bin
-- určené k vývoji, spouštění, ladění a dokumentování programů v Javě. -
Běhové prostředí Javy (Java Runtime Environment) se nalézá v
jre
. Obsahuje Java Virtual Machine (JVM), knihovnu tříd Java Core API a další soubory potřebné pro běh programů v Javě. -
Přídavné knihovny (Additional libraries) v podadresáři +lib+jsou další knihovny nutné pro běh vývojových nástrojů.
-
Ukázkové applety a aplikace (Demo Applets and Applications) v
demo
. Příklady zahrnují i zdrojový kód.
Nástroje ve vývojové distribuci
Pod Windows jsou to .exe
soubory umístěné v podadresáři bin
- java
(nebo jexec
)- spouštěč (přeloženého bajtkódu)
- javac
- překladač ( .java
→ .class
)
- javadoc
- generátor dokumentace API
- jar
-- správce archivů JAR (sbalení, rozbalení, výpis) a jarsigner
-- podpisovač archivů JAR
- jdb
-- debugger a jcmd
- zasílá diagnostické příkazy JVM
- appletviewer
-- referenční prostředí pro spouštění appletů
- javaws
-- referenční prostředí pro spouštění aplikací typu "Java Web Start" prostřednictvím Java Network Launching Protocol (JNLP) a javafxpackager
-- nástroj na sbalení JavaFX aplikace
Pomocné nástroje ve vývojové distribuci
-
javah
— generátor hlavičkových souborů pro C — používá se při programování tzv. nativních (platformově závislých) metod dostupných přes Java Native Interface (JNI) -
javap
— disassembler bajtkódu (např. pro ruční optimalizace, hledání chyb)
Budoucnost Javy
-
Na závěr optimistického úvodu si pročtěte zajímavý článek analytika od Forrester: Java Is A Dead-End For Enterprise App Development