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

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

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