Úvod do jazyka a prostředí Java

Tomáš Pitner, Radek Ošlejšek, Marek Šabo, Jakub Čecháček

Rychlost Javy

01 java is slow

Java jako programovací jazyk

  • Dle indexu TIOBE (na bázi výskytu "java programming" na webu) stále nejpopulárnější jazyk na světě s podílem 15 %, po jazycích Python, C, C++.

  • 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 — program používá volání metod objektů (zasílání zpráv objektům).

  • Je OO jazykem disponujícím objektovými třídami, což automaticky neplatí pro všechny jazyky s objekty.

  • Ideovým předchůdcem Javy je C++.

  • Svým způsobem je Java obdobou C++, ale zbaveným zbytečností a nepříjemností.

Java v budoucnu

  • Pro tradiční typy serverových podnikových aplikací a systémů 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, a zejména v poslední době Kotlin…​)

Mnoho jazyků bylo inspirovaných javou: C#, Groovy, Ruby, Scala, Kotlin…​

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, efektivní automatickou alokací a dealokací paměti (garbage collection), 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.

Další přednosti

  • 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ů.

  • Program v Javě je přenositelný na úrovni zdrojového i přeloženého kódu.

  • 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/Linux, Windows, MacOS X).

Omezení

  • Neuplatní se ve většině skutečně malých a low-power zařízení (kategorie Arduino, 8bitové kontrolery apod.)

  • Lze ji použít pro zařízení třídy RaspberryPi (32bitová)

  • Ve variantě jazyka Java Card se používá pro vývoj bezpečných aplikací pro chytré karty

    Coding techniques used in a practical Java Card program differ significantly from those used in a Java program. Still, that Java Card uses a precise subset of the Java language speeds up the learning curve, and enables using a Java environment to develop and debug a Java Card program (caveat: even if debugging occurs with Java bytecode, make sure that the class file fits the limitation of Java Card language by converting it to Java Card bytecode; and test in a real Java Card smart card early on to get an idea of the performance); further, one can run and debug both the Java Card code for the application to be embedded in a smart card, and a Java application that will be in the host using the smart card, all working jointly in the same environment. [Wikipedia: heslo Java_Card]

Java pro programátora

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.

Platformy (specifikace) Java

  • Java SE (Standard Edition) - pro běžná i serverová použití na běžných "plných" platformách (Linux, Mac OS, Win)

  • Java EE (Enterprise Edition) - kromě samotného běhového prostředí (JVM) zahrnuje také množství dalších API. Existuje 20 implementací (aplikačních serverů) Java EE, jako je GlassFish Server, IBM WebSphere Application Server, Red Hat JBoss Enterprise Application Platform a další.

  • Java ME (Micro Edition) - do přenosných, vestavěných a malých zařízení (mobily, televizory)

  • Java Card - platforma pro bezpečné chytré karty - je odlišné nejen API (knihovní třídy), ale i jazyk

Aktuální verze

Stav k lednu 2023:

  • Java Standard Edition 19 je aktuální "ostrou" verzí, v "ramp-down phase one" je Java 20 (frozen features), 21

  • Aktuální informace najdete vždy na webu Oracle Oracle Technetwork/Java.

  • K předpokládanému vývoji a podpoře existuje Oracle Java SE Support Roadmap

Licence Javy

  • Na stránkách https://www.java.com/download/ je java dostupná Oracle Java SE pro všechny platformy.

  • Pro testovací, vývojové, demonstrační nekomerční využití je Java SE zdarma.

  • Pro komerční provoz je Oracle Java placená. Licenční poplatky se liší dle způsobu nasazení (desktop až cloud) od cca $2.5 do $25 měsíčně na jeden procesor a zahrnuje podporu - podobně jako např. RHEL.

  • Pro plné využití zdarma je možné sáhnout po OpenJDK (Oracle’s free, GPL-licensed, production-ready OpenJDK JDK 19 binaries for Linux, macOS, and Windows)

Stažení Javy

  • samotné vývojové prostředí (JDK), např. OpenJDK 19 či Oracle 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.

Připravili jsme pro vás tutoriál, jak Javu nainstalovat.

Budoucnost Javy