Java One 2017

I attended Java One from October 1st - 5th. This year the conference was dominated by the announcement of Java 9, the new 6 month cadence for Java releases, and the synchronization between the Oracle and OpenJDK implementations. There were also a number of new open source projects released by Oracle. My favorites were JShell (part of Java 9) and Fn. The keynotes were the typical mix of announcements and commercials but I did get a lot of useful information from them.

I attended the following sessions and have added links to any slides, videos, or other resources I have found.

A Practical Guide to Cloud-Native Java Apps and Continuous Delivery
Ilya Dmitrichenko
gitops via flux

kubernetes - manages containers as pods, configuration via API, GCE makes kubernetes cluster deployment simple
prometheus - monitoring service, time series database, alerts for anything, human readable format

gitops - any dev/ops can use git, anyone can commit to git, all changes ares stoded, audited, validated in git and it's already most people's standard work flow
config is code, code/config must be version controlled, CD tools that dont record changes in git are harmful
code and config in separate repos, deploy automator pulls from image repo, applies config and deploys (*** get image ***)
git is source of truth, infrastructure changes are reviewed

draft - open source project to make deploying to Kubernetes easier
Java experimental flag that improves docker integration (*) - in demo Dockerfile

prometheus micrometer - not sure necessary with spring boot 2

IntelliJ IDEA Tips and Tricks
Anton Arhipov

7 habits for effective text editing 2.0

layout setup & navigation
typing & refactoring (while you type)

shift-shift - search everywhere
cmd shift a - execute action
cmd 1 - open/close project window
cmd cmd - open/close bottom icons
gutter icons/line numbers on left can be turned off
run/debug commands
project navigation and add/delete with popup nav menu
if you clean the screen you are forced to learn keyboard shortcuts
cmd e - recent files
cmd shift e - recently edited
Help -> Productivity guide

cmd j - list of live templates
cmd shift space - smart completion
cmd option f - declare final
in variable declaration -> shift tab - change type
smart autocompletion twice can provide context sensitive
cmd shift enter - completion
F2 - jump to error/issue then alt enter to fix
keyword and static completion (?) looks up all possibilities of keyword

select line, shift shift, live template -> create live template from selected text
cmd option p - introduce parameter
alt enter - inject language (select what you want), enter your text, press down and it will complete (example in xml with expansion)
alt enter - edit fragment, formats in sourcecode
cmd option x - presents options for xpath in xml sub editor
emmet - write structured documents faster
html example
table.mycss#mytable>tr3>td3 -> expand

funnel in debugger - visualize data in debugger - plugin (stream debugger)

Apache Kafka: Scalable Message Processing and More
Guido Schmutz

unix analogy slide is awesome (7th slide)
partitions guarantee order
producer using key always hashes to same partition
consumers track their own offset (can replay, rewind, fast forward, etc)
can consume since a timestamp
data retention completely independent of consumers
MQTT as a gateway to kafka, example is IOT
kafka connect allows you to read and write from/to multiple sources
single message transforms (mask CC, etc)
kafka streams - library on top of kafka, DSL based
ksql - stream processing without coding, still in dev preview, treats streams and tables as first class citizen
stream = data in motion
table = collected state of a stream
join stream and table

Modular Development with JDK 9
Alex Buckley

A module is a set of packages designed for reuse.
allowed to limit accessibility based on export rules

The unit of reuse is the unit of release
export packages
import modules
module {
exports com.example.Hello;
requires java.base;

slidedeck for migration
jdeps tool
requires java.base; is implicit and doesn't need to be in module declaration
automatic modules allow you to turn existing jars into modules

Going Reactive with Spring 5 and Project Reactor
Mark Heckler & Josh Long
@mkheck & @starbuxman

Spring 5 - first to support Reactor
The source code related to the presentation:

Build, Debug, and Deploy Your First Chatbot
Arun Gupta

Arun put most of the content of his presentation on GitHub

Java LangSec: New Security Enhancements in Java 9
Jim Manico
Get slide deck
Java Secure Development Guidelines
JSON parsing

Asynchronous by Default, Synchronous When Necessary
Tomasz Nurkiewicz

Distributed systems & event sourcing

Kafka Streams + TensorFlow + = Highly Scalable Deep Learning
Kai Waehner

Language translation, picture analysis, speech and video generation, intelligent decision making
seconds - fraud detection, price optimization
minutes - transportation rerouting, customer service
hours - inventory management, predictive maintenance
H2O Deepwater

JShell: An Interactive Shell for the Java Platform
Robert Field
JShell - REPL
API for use within other applications
Custom JShell that wraps HTS provider interface for easy, tok/detok on command line

jshell --start DEFAULT --start PRINTING
(lists what's there)

shift tab i (import class from current line)
shift tab v (create variable from current line)

Designing for Modularity with Java 9
Authors of OReilly Java 9 Modularity
Paul Bakker - @pbakker
Sander Mak - @Sander_Mak


Lazy Java
Mario Fusco

Key quote:

Strictness is about doing things,
Laziness is about noting things to do

Amazon Alexa Skills Versus Google Home Actions: The Big Java VUI Face-off
Viktor Gamov
Baruch Sadogursky

GitHub project that scraped Oracle pages for links

Doyle  Young

Doyle Young

View Comments