Hova tovább Android? OpenJDK és további várható újdonságok.

Hasonló dokumentumok
AMI KIMARADT AMI KIMARADT

Segédanyag: Java alkalmazások gyakorlat

OOP és UML Áttekintés

Android Pie újdonságai

JAVA SE/ME tanfolyam tematika

RIA Rich Internet Application

Újdonságok a Google műhelyéből. Péter Ekler

Mobil Informatikai Rendszerek

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java I. A Java programozási nyelv

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Web-fejlesztés NGM_IN002_1

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

iphone és Android két jó barát...

Mobil Informatikai Rendszerek

Google Web Toolkit. Elek Márton. Drótposta kft.

JAVA webes alkalmazások

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Java 9 alkalmazás architektúra

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

JNDI - alapok. Java Naming and Directory Interface

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Bevezetés a Java programozási nyelvbe

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Stateless Session Bean

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek Java

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Objektumorientált programozás C# nyelven

Bánsághi Anna

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20


Segédanyag: Java alkalmazások gyakorlat

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

JavaServer Pages (JSP) (folytatás)

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Java Programozó képzés A&K AKADÉMIA 2019.

Objektumorientált programozás C# nyelven

Java I. A Java programozási nyelv

Mobilalkalmazás fejlesztés. Android I. előadás

Objektumorientált programozás C# nyelven

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Android Wear programozás. Nyitrai István

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

Bevezetés a Java programozási nyelvbe

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

ANDROID ALKALMAZÁSFEJLESZTÉS

Objektumorientált programozás C# nyelven

Feltörekvő technológiák: seam, drools, richfaces és társai a JBossban

Szoftvertechnológia alapjai Java előadások

Összefüggő szakmai gyakorlat témakörei évfolyam. 9. évfolyam

Concurrency in Swing

Összefüggő szakmai gyakorlat témakörei. 13 évfolyam. Információtechnológiai gyakorlat 50 óra

Objektumorientált programozás C# nyelven III.

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Java Programozás 11. Ea: MVC modell

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java Remote Method Invocation API

és az instanceof operátor

Programozás II. labor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Kivételkezelés, naplózás. Exception handling, logging

Programozási nyelvek Java

Osztályszintű elérés, kivételkezelés, fájlkezelés

Java programozási nyelv

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Szoftvertechnológia alapjai Java előadások

Programozási nyelvek Java

eseményvezérelt megoldások Vizuális programozás 5. előadás

Komponens alapú fejlesztés

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Segédanyag: Java alkalmazások gyakorlat

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Interfészek. PPT 2007/2008 tavasz.

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

OOP #14 (referencia-elv)

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Programozási nyelvek Java

Java programozási nyelv 6. rész Java a gyakorlatban

Java best practices A&K AKADÉMIA MARKOS ANDRÁS


Junior Java Képzés. Tematika

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Átírás:

Hova tovább Android? OpenJDK és további várható újdonságok peter.ekler@aut.bme.hu

A félév felépítése Java nyelv kialakulása Szintaktikai alapok Java környezetek > Java ME > Java SE > Java EE Java APIk: UI, hálózatkezelés, perzisztencia, stb. Java Web Ütemezés: > ZH1: 7. hét > ZH2: 12. hét > NagyHF specifikáció: 8. hét > NagyHF leadás: 14. hét

Miről beszéljünk?

Java fejlődéstörténet - röviden 1996: Development Kit 1 (Oak) > 8 package; 212 osztály 2006: Java 6 (Mustang) > 203 package; 3793 osztály 2011: Java 7 (Dolphin) > 209 packages; 4024 osztály 2014: Java 8 > 217 package; 4240 osztály ~2017 március: Java 9

Java újdonságok Nyelvi újdonságok > Be kell hozni a lemaradást Fejlődő API Fejlettebb virtuális gép Fejlődő GC Fordítás optimalizálása Technológiai újítások: > Beágyazott, web, asztali

JavaFX áttekintés Java SE része, Win/Linux/Mac támogatás Teljesen megújult UI API FXML alapú felület leírás Grafikus gyorsító támogatás Multimédia, animációk és effektek Web render támogatás Gyors eseménykezelés Swing kompatibilitás

CSS támogatás Megjelenítés megváltoztatása a forráskód változtatása nélkül Bármelyik Scene Graph Node-on alkalmazható és akár futási időben is hozzárendelhető W3C CSS 2.1 alapú

UI vezérlők JavaFX API-n keresztül elérhetők Scene Graph Node elemek CSS-el testreszabható megjelenítés Animációk és effektek

Oracle vs. Google Mi a pereskedés tárgya?

Háttér 2007: Android megjelenése > Java a SUN tulajdonában volt > Nyitottak voltak az együttműködésre, de nincs szerződés > Apache Harmony Java implementáció (2011-ben leállt a fejlesztése) ~2010: Oracle felvásárolja a SUN-t > Nem jutottak egyezségre > Folyamatos pereskedés 2015-16: Áttérés OpenJDK-ra > Érdekesség: OpenJDK is Oracle fejlesztés

Milyen Java-t is támogat most az Android? Java 7 a 19-es Build Tool-tól > 2011-ben jelent meg > 2012-13-tól kezdték el támogatni Androidon ~Java 8 bizonyos részei API level-től függően > 2014-ben jelent meg > 2016-tól kezd részben támogatott lenni Androidon

Java 7 - emlékeztető String alapú switch Bináris formátumok és _ -es elválasztás számokban: int bitfield = 0b10101001; int value = 100_200; Multi-catch és pontosabb kivétel tovább dobás try { }catch (ConnectionPendingException IOException ex) { ex.printstacktrace(); } Improved type inference for generic instance creation (diamond) MyClass<Integer> myobject = new MyClass<>(""); try-with-resources statement

Try-with-resources statement try ( Socket socket = new Socket("192.168.1.130", 5040); InputStream is = socket.getinputstream(); ) { } catch (Exception e) { e.printstacktrace(); } AutoCloseable-t implementáló objektumok close() metódusa automatikusan meghívódik > Készíthetünk saját implementációkat is Ettől függetlenül lehet catch és finally ág > Ezek az erőforrás bezárás hívás után hajtódnak végre

Megérkett: Android Nougat (7.0 24) Biztonság fejlesztése Láthatatlan frissítések Multi-window multitasking Fejlettebb értesítések Gyorsabb és energiatakarékosabb (Project Doze) Kevesebb mobil adatforgalom Hozzáférés vezérlése könyvtáranként Fejlesztőknek: adott Java 8 nyelvi elemek

Főbb Java 8 újdonságok - Android Alapértelmezett és statikus metódusok Interface-ben (API 24-től) Lambda kifejezések (API 9-től felfele) Ismétlődő/azonos annotációk Metódus referenciák (API 23-tól és annál kisebb is) Típus annotációk (API 23-tól és annál kisebb is) > Fordítási időben érhetők csak el Új nyelvi API-k Utility APIk: > java.util.function > java.util.stream

Alapértelmezett és statikus metódusok Interface-ben public interface ResponseHandler { void handleok(byte[] data); void handleempty(); static String converthttpstatustostring() {... } } default void handleerror(string status) { Log.d("TAG_ERROR", status); }

Lambda kifejezések btndemo.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { Toast.makeText(MainActivity.this, "Demo", Toast.LENGTH_SHORT).show(); } }); Helyett: btndemo.setonclicklistener(v -> Toast.makeText( MainActivity.this, "Demo", Toast.LENGTH_SHORT).show()); Lambda expressions let you express instances of singlemethod classes more compactly.

Ismétlődő/azonos annotációk @Schedule(dayOfMonth="last") @Schedule(dayOfWeek="Fri", hour="23") public void doperiodiccleanup() {... } @Repeatable(Schedules.class) public @interface Schedule { String dayofmonth() default "first"; String dayofweek() default "Mon"; int hour() default 12; } public @interface Schedules { Schedule[] value(); }

Metódus referenciák Típus Referencia statikus metódusra Referencia egy konkrét példány metódusára Referencia gy konkrét típus példányának metódusára Konstruktor referncia Példa ContainingClass::staticMet hodname containingobject::instance MethodName ContainingType::methodName ClassName::new Lambda: Arrays.sort(rosterAsArray, (a, b) -> Person.compareByAge(a, b) ); Metódus referencia: Arrays.sort(rosterAsArray, Person::compareByAge);

További Java 8 kiegészítések Házi feladat! Felhasználható források: > http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html > http://docs.oracle.com/javase/8/docs/technotes/guides/language/enhancements.html#jav ase8 Érdekességek: > Stream API > Security > JavaFX újítások > Concurrency > java.lang / java.util csomagok > Java Mission Control 5.3 > Nashorn Javascript Engine > Dinamikus JavaScript kód JVM-en

Mit is hoz az OpenJDK Android esetében? Apache Harmony elhagyása Nyelvi újítások gyorsabb megjelenése Egységesebb közösség Talán a Google is kap szeletet az OpenJDK fejlesztésében API bővülése

Mi várható a Java 9-ben? (~2017 március) Jshell Java Microbenchmarking Harness GC optimalizáció HTTP 2.0 Process API jelentős bővítése És még: > moduláris forrás/packaging, HTML5 Javadoc, unified GC log, JavaFX újítások, multi-resolution képek, stb. További részletek: > http://openjdk.java.net/projects/jdk9/

Kitekintés

Köszönöm a figyelmet! http://blog.autsoft.hu http://www.autsoft.hu/ peter.ekler@aut.bme.hu