To Java SE 8, and Beyond (Plan B)



Similar documents
Java SE 7 Programming

Java SE 8 Programming

<Insert Picture Here> Java, the language for the future

Crash Course in Java

: provid.ir

DIPLOMADO DE JAVA - OCA

e ag u g an L g ter lvin v E ram Neal G g ro va P Ja

Java SE 7 Programming

Java SE 7 Programming

Java Application Developer Certificate Program Competencies

Fundamentals of Java Programming

Java Interview Questions and Answers

Habanero Extreme Scale Software Research Project

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

CSC 551: Web Programming. Spring 2004

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011

Lecture 1 Introduction to Android

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Moving from CS 61A Scheme to CS 61B Java

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.

Eclipse installation, configuration and operation

Install Java Development Kit (JDK) 1.8

An Overview of Java. overview-1

Multithreading and Java Native Interface (JNI)!

The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications

Object Oriented Software Design II

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months

The C Programming Language course syllabus associate level

CS506 Web Design and Development Solved Online Quiz No. 01

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC?

Java with Eclipse: Setup & Getting Started

INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

Java Programming Fundamentals

The Future of Java. Terrence Barr Senior Technologist, Oracle

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Java Garbage Collection Basics

Web Development in Java

C++ Programming Language

Java Crash Course Part I

Android Developer Fundamental 1

Java SE 8 - Moving Java forward

Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework

<Insert Picture Here> What's New in NetBeans IDE 7.2

FileMaker 11. ODBC and JDBC Guide

AP Computer Science Java Subset

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

Chapter 1 Fundamentals of Java Programming

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

ASM 4.0 A Java bytecode engineering library. Eric Bruneton

Cloud Computing. Up until now

Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder

Intel Threading Building Blocks (Intel TBB) 2.2. In-Depth

Install guide for Websphere 7.0

Debugging Java Applications

Oracle to MySQL Migration

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Real Time Programming: Concepts

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

CS 377 Database Systems SQL Programming. Li Xiong Department of Mathematics and Computer Science Emory University

An Incomplete C++ Primer. University of Wyoming MA 5310

Toasterkit - A NetBSD Rootkit. Anthony Martinez Thomas Bowen

JDBC. It is connected by the Native Module of dependent form of h/w like.dll or.so. ex) OCI driver for local connection to Oracle

Java CPD (I) Frans Coenen Department of Computer Science

Lecture 7: Class design for security

Load Balancing IBM WebSphere Servers with F5 Networks BIG-IP System

CS346: Database Programming.

U N C L A S S I F I E D

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

8 Tutorial: Using ASN.1

1 Posix API vs Windows API

TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

The Data Access Handbook

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version

Services. Relational. Databases & JDBC. Today. Relational. Databases SQL JDBC. Next Time. Services. Relational. Databases & JDBC. Today.

D06 PROGRAMMING with JAVA. Ch3 Implementing Classes

In Memory Accelerator for MongoDB

CS 111 Classes I 1. Software Organization View to this point:

Getting Started with the Internet Communications Engine

Using EDA Databases: Milkyway & OpenAccess

Java DB Performance. Olav Sandstå Sun Microsystems, Trondheim, Norway Submission ID: 860

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)

Business Application Services Testing

Habanero Extreme Scale Software Research Project

Cache Database: Introduction to a New Generation Database

Chapter 1 Java Program Design and Development

Oracle8/ SQLJ Programming

MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Transcription:

11-12-13 <Insert Picture Here> To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader

8 9...2012 2020?

Priorities for the Java Platforms Grow Developer Base Grow Adoption Increase Competitiveness Adapt to change

Evolving the Language From Evolving the Java Language - JavaOne 2005 Java language principles Reading is more important than writing Code should be a joy to read The language should not hide what is happening Code should do what it seems to do Every good feature adds more bad weight Sometimes it is best to leave things out Simplicity matters 4

How Java Evolves and Adapts Of the community, by the community, for the community

8 6

JDK 8 Proposed Content

Language 8

Big Disclaimer The syntax used in the following slides may change 9

Lambda Expressions I Closures and Functional Programming Lambda expressions provide anonymous function types to Java They replace the use of single abstract method types (SAM) They are just instances of Runnable Syntax Argument List Arrow Token Body Body can be: (int x, int y) -> x + y (a) A single expression: body is evaluated and result value returned. (b) Statement block: body is evaluated as a method body and return statement returns control to the caller.

Lambda Expressions II Closures and Functional Programming Type of parameters can be explicitly declared or taken from context. Argument parenthesis are optional when there is only one and its type can be inferred. Argument List can be empty, if it is so, parenthesis must exist. If body has more that one statement, then curly braces are needed. Runnable r = () > { System.out.println( "I'm a Runnable!" ); }; r.run(); jbutton.addactionlistener( e > { System.out.println( "Clicked" ); } ); n > n % 2!= 0; (char c) > c == 'y'; (x, y) > x + y; (int a, int b) > a * a + b * b; () > { return 3.14 }; (String s) > { System.out.println(s); };

Lambda Expressions III Closures and Functional Programming

Extension Methods Bringing Multiple Inheritance to Java Provide a mechanism to add new methods to existing interfaces Without breaking backwards compatability Gives Java multiple inheritance public interface Set<T> extends Collection<T> { public int size(); //... The rest of the existing Set methods } public T reduce( Reducer<T> r ) default Collections.<T>setReducer;

Annotations on Java Types Annotations can currently only be used on type declarations Classes, methods, variable definitions Extension for places where types are used e.g. Parameters Permits error detection by pluggable type checkers e.g. null pointer errors, race conditions, etc public void process(@notnull List data) { }

Access to Parameter Names at Runtime Mechanism to retrieve parameter names of methods and constructors At runtime via core reflection Improved code readability Eliminate redundant annotations Improve IDE capabilities Auto-generate template code

Small Things Repeating annotations Multiple annotations with the same type applied to a single program element No more apt tool and associated API Complete the transition to the JSR 269 implementation DocTree API Provide access to the syntactic elements of a javadoc comment DocLint tool Use DocTree API to identify basic errors in javadoc comments Javadoc support in javax.tools Invoke javadoc tools from API as well as command line/exec

Library

Concurrency Updates Scalable update variables DoubleAccumulator, DoubleAdder, etc Multiple variables avoid update contention Good for frequent updates, infrequent reads ConcurrentHashMap updates Improved scanning support, key computation ForkJoinPool improvements Completion based design for IO bound applications Thread that is blocked hands work to thread that is running

Bulk Data Operations for Collections Adding.Net functionality LINQ style processing Serial and parallel implementations Generally expressed with Lambda statements Parallel implementation builds on Fork-Join framework

Date and Time APIs A new date, time, and calendar API for the Java SE platform Supports standard time concepts Partial, duration, period, intervals date, time, instant, and time-zone Initially provides a limited set of calendar systems and will be extensible to others Uses relevant standards, including ISO-8601, CLDR, and BCP47 Based on an explicit time-scale with a connection to UTC

JDBC 4.2 Minor enhancements for usability and portability Add setter/update methods ResultSet, PreparedStatement and CallableStatement Support new data types such as those being defined in JSR 310 REF_CURSOR support for CallableStatement Extended DatabaseMetaData.getIndexInfo new columns for CARDINALITY and PAGES which return a long value New DatabaseMetaData method getmaxlogicallobsize Return the logical maximum size for a LOB

Small (or perhaps not) things Enhance core libraries with Lambdas (not small thing) Parallel array sorting (improve x4) Base 64 Encoding and Decoding (no need of undocumented API) Charset implementation improvements Reduced size of charsets Improved performance of encoding/decoding Reduced core-library memory usage Reduced object size, disable reflection compiler, internal table sizes Optimize java.text.decimalformat.format (improve x100 or x1000) Statically Linked JNI Libraries (needed for embedded applications) Handle frequent HashMap collisions with balanced trees

9... 23

Java SE 9 (and beyond )

Vision: Interoperability Improved support for non-java languages Invokedynamic (done) Java/JavaScript interop (in progress JDK 8) Meta-object protocol (JDK 9) Long list of JVM optimizations (JDK 9+) Java/Native Calls between Java and Native without JNI boilerplate (JDK 9)

Vision: Cloud Multi-tenancy (JDK 8+) Improved sharing between JVMs in same OS Per-thread/threadgroup resource tracking/management Hypervisor aware JVM (JDK 9+) Co-operative memory page sharing Co-operative lifecycle, migration

Vision: Language Features Large data support (JDK 9) Large arrays (64 bit support) Unified type system (JDK 10+) No more primitives, make everything objects Other type reification (JDK 10+) True generics Function types Data structure optimizations (JDK 10+) Structs, multi-dimensional arrays, etc Close last(?) performance gap to low-level languages

Vision: Integration Modern device support (JDK 8+) Multitouch (JDK 8+) Location (JDK 8+) Sensors compass, accelerometer, temperature, pressure,... (JDK 8+) Heterogenous compute models (JDK 9+) Java language support for GPU, FPGA, offload engines, remote PL/SQL...

The Path Forward (JDK 10) Open development Prototyping and R&D in OpenJDK Cooperate with partners, academia, greater community Work on next JDK, future features in parallel 2-year cycle for Java SE releases

Java SE from JDK 7 to JDK 12 2011 2012 2013 2015 2017 2019 2021 2014 JDK 7 JDK 8 JDK 9 JDK 10 JDK 11 JDK 12 JVM convergence Mac OS X