Core Development Tools Update Java 9, Jenkins, Maven Will Iverson - - PowerPoint PPT Presentation

core development tools update
SMART_READER_LITE
LIVE PREVIEW

Core Development Tools Update Java 9, Jenkins, Maven Will Iverson - - PowerPoint PPT Presentation

Core Development Tools Update Java 9, Jenkins, Maven Will Iverson Co-owner, Dev9 Will Iverson Co-owner, Dev9 Professional software dev/ architect/consultant since 1995 Roles: Apple, Symantec, SolutionsIQ Clients: Sun,


slide-1
SLIDE 1

Core Development Tools Update

Java 9, Jenkins, Maven… Will Iverson Co-owner, Dev9

slide-2
SLIDE 2
  • Will Iverson
  • Co-owner, Dev9
  • Professional software dev/

architect/consultant since 1995

  • Roles: Apple, Symantec, SolutionsIQ
  • Clients: Sun, BEA, Canal+, T-Mobile,

at&t, Microsoft, State of WA, many

  • ther local firms…
  • 4 books, many articles
slide-3
SLIDE 3
  • 2015 – VR, 20 Years of Java & CMS
  • 2013 – Greenfield Java
  • 2012 – JPA/Hibernate & myBatis
  • 2011 – Session Management, Selenium
  • 2010 – Play Framework
  • 2010 – CSI: Java - Dead JVM Analysis
  • 2009 – Maven
slide-4
SLIDE 4
slide-5
SLIDE 5
  • Where are things with Java 9, Jenkins 2, and Maven?
  • In this session we'll look at the status of the major

updates to core development tools, including (where applicable) demos of the current releases.

  • We'll also cover some simple scenarios for using Docker

to ease development tasks, even if you aren't ready for Docker in production.

  • We'll conclude with a review of what it means to be a

"full stack developer" in a world of advanced JavaScript, mobile, voice, virtual reality, and more.

slide-6
SLIDE 6
  • http://openjdk.java.net/projects/jdk9/
  • http://www.java9countdown.xyz/
slide-7
SLIDE 7
  • 2016/05/26

Feature Complete

  • 2016/08/11

All Tests Run

  • 2016/09/01

Rampdown Start

  • 2016/10/20

Zero Bug Bounce

  • 2016/12/01

Rampdown Phase 2

  • 2017/01/26

Final Release Candidate

  • 2017/03/23

General Availability

slide-8
SLIDE 8

102: Process API Updates 110: HTTP 2 Client 143: Improve Contended Locking 158: Unified JVM Logging 165: Compiler Control 193: Variable Handles 197: Segmented Code Cache 199: Smart Java Compilation, Phase Two 200: The Modular JDK 201: Modular Source Code 211: Elide Deprecation Warnings on Import Statements 212: Resolve Lint and Doclint Warnings 213: Milling Project Coin 214: Remove GC Combinations Deprecated in JDK 8 215: Tiered Attribution for javac 216: Process Import Statements Correctly 217: Annotations Pipeline 2.0 219: Datagram Transport Layer Security (DTLS) 220: Modular Run-Time Images 221: Simplified Doclet API 222: jshell: The Java Shell (Read-Eval-Print Loop) 223: New Version-String Scheme 224: HTML5 Javadoc 225: Javadoc Search 226: UTF-8 Property Files 227: Unicode 7.0 228: Add More Diagnostic Commands 229: Create PKCS12 Keystores by Default 231: Remove Launch-Time JRE Version Selection 232: Improve Secure Application Performance 233: Generate Run-Time Compiler Tests Automatically 235: Test Class-File Attributes Generated by javac 236: Parser API for Nashorn 237: Linux/AArch64 Port 238: Multi-Release JAR Files 240: Remove the JVM TI hprof Agent 241: Remove the jhat Tool 243: Java-Level JVM Compiler Interface 244: TLS Application-Layer Protocol Negotiation Extension 245: Validate JVM Command-Line Flag Arguments 246: Leverage CPU Instructions for GHASH and RSA 247: Compile for Older Platform Versions 248: Make G1 the Default Garbage Collector 249: OCSP Stapling for TLS 250: Store Interned Strings in CDS Archives 251: Multi-Resolution Images 252: Use CLDR Locale Data by Default 253: Prepare JavaFX UI Controls & CSS APIs for Modularization 254: Compact Strings 255: Merge Selected Xerces 2.11.0 Updates into JAXP 256: BeanInfo Annotations 257: Update JavaFX/Media to Newer Version of Gstreamer 258: HarfBuzz Font-Layout Engine 259: Stack-Walking API 260: Encapsulate Most Internal APIs 261: Module System 262: TIFF Image I/O 263: HiDPI Graphics on Windows and Linux 264: Platform Logging API and Service 265: Marlin Graphics Renderer 266: More Concurrency Updates 267: Unicode 8.0 268: XML Catalogs 269: Convenience Factory Methods for Collections 270: Reserved Stack Areas for Critical Sections 271: Unified GC Logging 272: Platform-Specific Desktop Features 273: DRBG-Based SecureRandom Implementations 274: Enhanced Method Handles 275: Modular Java Application Packaging 276: Dynamic Linking of Language-Defined Object Models 277: Enhanced Deprecation 278: Additional Tests for Humongous Objects in G1 279: Improve Test-Failure Troubleshooting 280: Indify String Concatenation 281: HotSpot C++ Unit-Test Framework 282: jlink: The Java Linker 283: Enable GTK 3 on Linux 284: New HotSpot Build System 285: Spin-Wait Hints 287: SHA-3 Hash Algorithms 289: Deprecate the Applet API

slide-9
SLIDE 9
  • 240:Remove the JVM TI hprof Agent
  • 241:Remove the jhat Tool
  • See CIS Java recording
  • 289:Deprecate the Applet API
  • 214:Remove GC Combinations Deprecated in JDK 8
  • 231:Remove Launch-Time JRE Version Selection
slide-10
SLIDE 10
  • 102: Process API Updates
  • 110: HTTP 2 Client
  • 143: Improve Contended Locking
  • 216: Process Import Statements Correctly
  • 226: UTF-8 Property Files
  • 262: TIFF Image I/O
  • 263: HiDPI Graphics on Windows and Linux
  • 251: Multi-Resolution Images
  • 245: Validate JVM Command-Line Flag Arguments
  • 256: BeanInfo Annotations
  • From javadoc-> real annotations
  • 264: Platform Logging API and Service
  • 274: Enhanced Method Handles
  • Improved invoke
slide-11
SLIDE 11
  • 255: Merge Selected Xerces 2.11.0 Updates

into JAXP

  • 268: XML Catalogs
slide-12
SLIDE 12
  • 223: New Version-String Scheme
  • JDK 7 Update 55, or JDK 7 Update 60?
  • $MAJOR.$MINOR.$SECURITY
  • 227: Unicode 7.0
  • 267: Unicode 8.0
  • 272: Platform-Specific Desktop Features
  • Mac OS X, Windows, Linux
  • Lots of cool desktop integration stuff
  • Forced by modules…
slide-13
SLIDE 13
  • 253: Prepare JavaFX UI Controls & CSS APIs

for Modularization

  • Modules!
  • 257: Update JavaFX/Media to Newer

Version of Gstreamer

slide-14
SLIDE 14
  • 158: Unified JVM Logging
  • 212: Resolve Lint and Doclint Warnings
  • 283: Enable GTK 3 on Linux
  • 284: New HotSpot Build System
  • 254: Compact Strings
  • 278: Additional Tests for Humongous Objects in G1
  • 197: Segmented Code Cache
  • 228: Add More Diagnostic Commands
  • 165: Compiler Control
  • 233: Generate Run-Time Compiler Tests Automatically
  • 235: Test Class-File Attributes Generated by javac
  • 248: Make G1 the Default Garbage Collector
  • https://blogs.oracle.com/java/entry/garbage_collector
  • 250: Store Interned Strings in CDS Archives
  • 252: Use CLDR Locale Data by Default
  • Default to CLDR Unicode locale data
  • 258: HarfBuzz Font-Layout Engine
  • 265: Marlin Graphics Renderer
  • 270: Reserved Stack Areas for Critical Sections
  • 271: Unified GC Logging
  • 276: Dynamic Linking of Language-Defined Object

Models

  • INVOKEDYNAMIC changes
  • 279: Improve Test-Failure Troubleshooting
  • 280: Indify String Concatenation
  • 281: HotSpot C++ Unit-Test Framework
  • 285: Spin-Wait Hints
slide-15
SLIDE 15
  • 236: Parser API for Nashorn
  • Get access to AST
slide-16
SLIDE 16
  • 193: Variable Handles
  • Replace atomic/Unsafe
  • 266: More Concurrency Updates
  • In JVM Reactive pub/sub
  • CompletableFutureimprovements
slide-17
SLIDE 17
  • 219: Datagram Transport Layer Security (DTLS)
  • 229: Create PKCS12 Keystores by Default
  • 232: Improve Secure Application Performance
  • Less of a hit when running w/Security Manager
  • 244: TLS Application-Layer Protocol Negotiation Extension
  • 246: Leverage CPU Instructions for GHASH and RSA
  • 249: OCSP Stapling for TLS
  • 273: DRBG-Based SecureRandom Implementations
  • 287: SHA-3 Hash Algorithms
slide-18
SLIDE 18
  • 199: Smart Java Compilation, Phase Two
  • Incremental builds, javac wrapper - sjavac
  • JEP 211: Elide Deprecation Warnings on Import Statements
  • Elide means “omit”
  • 215: Tiered Attribution for javac
  • New method type-checking strategy in javac, speed up attribution of poly expression in arg position
  • 217: Annotations Pipeline 2.0
  • Function<String, String> fss= (@Anno @Anno String s) -> s;
  • 247: Compile for Older Platform Versions
  • -release N is equivalent to -source N -target N -bootclasspath <bootclasspath-from-N>.
  • 259: Stack-Walking API
  • Runtime stack walk
  • 277: Enhanced Deprecation
  • Revamp deprecation annotation
  • Provide tools to strengthen API life cycle - jdeprfind
slide-19
SLIDE 19
  • 213: Milling Project Coin
  • Allow @SafeVargs on private instance methods.
  • Effectively-final variables as resources in try-with-

resources

  • Allow diamond with anonymous classes if argument

type of inferred type is denotable

  • Complete removal, begun in Java SE 8, of underscore

from set of legal identifier names

  • 269: Convenience Factory Methods for Collections
  • Set<String> set = Set.of("a", "b", "c");
slide-20
SLIDE 20
  • 221: Simplified Doclet API
  • 224: HTML5 Javadoc
  • 225: Javadoc Search
  • Local index
slide-21
SLIDE 21
  • 200: The Modular JDK
  • https://blogs.oracle.com/java/entry/module_system_in_jdk_9
  • https://blogs.oracle.com/java/entry/the_state_of_the_module1
  • 201: Modular Source Code
  • 220: Modular Run-Time Images
  • 222: jshell: The Java Shell (Read-Eval-Print Loop)
  • 237: Linux/AArch64 Port
  • 238: Multi-Release JAR Files
  • 260: Encapsulate Most Internal APIs
  • 261: Module System
  • 275: Modular Java Application Packaging
  • 282: jlink: The Java Linker
  • Tool to build JEP 220 Images
slide-22
SLIDE 22
  • Most simple way to think of…
  • Add declaration to JAR defining exposed API
  • No more public = exposed to everything
  • JDK 9 ~69 modules
  • java.base= 5575 classes
  • java.desktop= 5835 classes
  • java.corba = 1830 classes
slide-23
SLIDE 23

module com.foo.bar { } module com.foo.bar { requires org.baz.qux; }

slide-24
SLIDE 24

module com.foo.bar { requires org.baz.qux; exports com.foo.bar.alpha; exports com.foo.bar.beta; }

slide-25
SLIDE 25

META-INF/ META-INF/MANIFEST.MF module-info.class com/foo/bar/alpha/AlphaFactory.class com/foo/bar/alpha/Alpha.class

slide-26
SLIDE 26
  • Simple, solid explaination
  • Touches on reflection, migration, etc.
  • http://openjdk.java.net/projects/jigsaw/spec/sotms/
slide-27
SLIDE 27
slide-28
SLIDE 28
  • 243: Java-Level JVM Compiler Interface
  • Write your own JIT in Java
slide-29
SLIDE 29
  • https://blogs.oracle.com/java/entry/get_rea

dy_for_java_9

  • https://www.youtube.com/playlist?list=PLX

8CzqL3ArzUPNQ-r1ZmJrSuoL2EVnVma%20

slide-30
SLIDE 30
  • Pipelines
  • Jenkinsfile
  • https://jenkins.io/doc/pipeline/
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33
slide-34
SLIDE 34
slide-35
SLIDE 35
  • Blue Ocean
  • https://jenkins.io//blog/2016/05/26/introd

ucing-blue-ocean/

slide-36
SLIDE 36
slide-37
SLIDE 37
slide-38
SLIDE 38
slide-39
SLIDE 39
slide-40
SLIDE 40
slide-41
SLIDE 41
  • “Probably we will wait for JDK 9 to be

released so that we can kill off support for JDK 7”

  • “There will probably be a 3.4 soon-ish once

we get some other things sorted

  • ut.”
  • …Gradle...?
slide-42
SLIDE 42

Spring Boot

Web

  • Traditional
  • Single Page
  • Responsive

Desktop Native

  • Windows
  • Mac OS X
  • Linux

Mobile Native

  • iOS
  • Android

Voice Integration

  • Siri
  • Google Now/Assistant
  • Cortana
  • Amazon

Email

  • Egad

Game Frameworks

  • Unity3D
  • Unreal
  • LibGDX
  • Many, many more

Set Top Boxes

  • Apple TV
  • Roku

Wearables

  • Watches
  • Watch Bands
  • Glasses

IoT

  • WiFi everywhere!

Social

  • Twitter
  • Facebook
  • Chat
slide-43
SLIDE 43
slide-44
SLIDE 44

Same room, 6pm next week! Tuesday, June 28th https://www.eventbrite.com/e/is-agile-dead-tickets-26043508836

slide-45
SLIDE 45
  • Amazing Times
  • AI, Big Data, Persistence, New Client Side

Tech…

  • Java 9 = Stability & Planning for Future
  • Java Stability is ok…
  • ...build on that!
  • Pick stuff you LOVE!
slide-46
SLIDE 46
slide-47
SLIDE 47
  • Send email to info@dev9.com!
slide-48
SLIDE 48