Skip to content

Commit 2e2083b

Browse files
author
Mikkel Kjeldsen
committed
Write presentation
1 parent 9230222 commit 2e2083b

File tree

8 files changed

+228
-82
lines changed

8 files changed

+228
-82
lines changed

Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ LATEXMK := latexmk $(if $(xelatex),-xelatex,-pdflatex="pdflatex %O %S") \
6060

6161
## ---- build rules ----
6262

63+
plantuml_diagrams_pu := $(wildcard media/*.pu)
64+
plantuml_diagrams_png := $(plantuml_diagrams_pu:.pu=.png)
65+
6366
notes_md := $(wildcard $(NOTES)/*.md)
6467

6568
notes_tex := $(patsubst $(NOTES)/%.md,lectures/%.tex,$(notes_md))
@@ -96,6 +99,10 @@ $(handouts_notes_tex): handouts/%.tex: $(NOTES)/%.md
9699
-V scuro="" \
97100
-o $@ $<
98101

102+
media/%.png: media/%.pu
103+
java -jar plantuml.jar -tpng $<
104+
optipng $@
105+
99106
phony_pdfs := $(if $(always_latexmk),$(pdfs) $(notes_pdf))
100107

101108
# phony targets to make all three PDFS for a single source
@@ -117,7 +124,7 @@ $(notes_pdf): %.pdf: %.tex
117124
pdfjam --nup 2x2 --landscape $(dir $@)$(temp_dir)/$(notdir $@) -o $@
118125
rm -r $(dir $@)$(temp_dir)
119126

120-
all: $(pdfs) $(notes_pdf)
127+
all: $(plantuml_diagrams_png) $(pdfs) $(notes_pdf)
121128

122129
# clean up everything except final pdfs
123130
clean:

media/openjdk.png

21.8 KB
Loading

media/openjdk.pu

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
@startuml
2+
3+
frame Source {
4+
artifact repo as "openjdk.hg"
5+
}
6+
7+
frame Builds {
8+
artifact others as "..."
9+
10+
frame Oracle {
11+
artifact ojdk as "Oracle JDK"
12+
artifact oojdk as "Oracle OpenJDK"
13+
}
14+
15+
artifact ajdk as "Azul Zulu"
16+
artifact aojdk as "AdoptOpenJDK"
17+
}
18+
19+
frame "Technology Compatibility Kit" {
20+
card tck as ""Java SE compatible""
21+
}
22+
23+
repo --> ojdk
24+
repo --> oojdk
25+
repo --> ajdk
26+
repo --> aojdk
27+
repo --> others
28+
29+
ojdk ..> tck
30+
oojdk ..> tck
31+
ajdk ..> tck
32+
aojdk ..> tck
33+
others ..> tck
34+
35+
tck ..> aojdk
36+
tck ..> ajdk
37+
tck ..> ojdk
38+
tck ..> oojdk
39+
tck ..> others
40+
41+
@enduml

media/shot-java.jpg

27.4 KB
Loading

notes/java-future.md

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
---
2+
title: |
3+
Overview of new Java\
4+
release and licensing strategy
5+
subtitle: or, "_can I use `var` yet?_"
6+
sansfont: DejaVu Sans
7+
slide-numbers: true
8+
links-as-notes: true
9+
---
10+
11+
# watsit
12+
13+
## Motivation
14+
15+
\center\includegraphics[width=4\TPHorizModule]{../media/shot-java.jpg}
16+
17+
## Primary resources
18+
19+
- \href{https://bit.do/java-still-free}{Java Is Still Free}
20+
- \href{https://blog.joda.org/}{Stephen Colebourne}
21+
- \href{https://www.reddit.com/r/java}{/r/java}
22+
23+
## Terminology
24+
25+
> - "feature": new toys
26+
> - "update": toy maintenance
27+
> - "support": babysitters
28+
> - "free as in beer" a.k.a. "\$free": gratis
29+
> - "free as in speech" a.k.a. "free": unconstrained
30+
> - "development": something that supports yourself
31+
> - "production": something that supports others
32+
33+
## Guiding principles
34+
35+
> "_Maybe jumping on the "release train" is right for you or maybe sticking to
36+
> LTS is, but making a big commitment to either right now, based on
37+
> speculation, is neither wise nor necessary._" --- /u/pron98
38+
39+
## Guiding principles
40+
41+
- Reduce unnecessary risk
42+
- Big decisions not _necessary_ yet
43+
- Community has no experience with new strategy yet
44+
- Stay with HotSpot
45+
- Reduce development and operational overhead
46+
- Spend less time on upgrades
47+
- Require less buy-in for upgrading
48+
- More toys faster
49+
- Expect responsible maintenance
50+
- Updates regularly, in timely manner
51+
- Reassess in 2020
52+
- Better understanding of impact of new strategy
53+
- Expected biggest obstacle: third-party dependencies (i.e. not JDK or JVM)
54+
55+
# Recommendations\
56+
for next 18 months
57+
58+
## Developers
59+
60+
- Use distro\footnote{If not an option, use AdoptOpenJDK} OpenJDK
61+
- Build on JDK._LTS_\footnote{Expect to be stuck on Java 8 for a while}
62+
- Test build on
63+
- JDK._LTS_
64+
- JDK._stable_
65+
- JDK._next_\footnote{\textit{Super} important}\footnote{Also really easy
66+
in Travis CI}
67+
68+
## Operations
69+
70+
- Provide JDK._LTS_, JDK._stable_, **and** JDK._next_
71+
- Use distro\footnote{If not an option, use AdoptOpenJDK} OpenJDK
72+
- For _future option_ of paid support, use Azul Zulu
73+
- Use JDK._LTS_ in production\footnote{We still have to keep it updated}
74+
- Consider shift to per-application JDK\footnote{This may happen
75+
automatically as LTO becomes common}
76+
77+
## Avoid
78+
79+
- Oracle JDK in production --- requires license and we don't use commercial
80+
support today anyway\footnote{Not because we shouldn't pay but because we
81+
don't use what we'd be paying for}
82+
- Oracle JDK 8 in development --- legal but pointless
83+
- Oracle OpenJDK 8 in development --- legal but pointless
84+
- Oracle OpenJDK in production --- legal but irresponsible
85+
- Neglecting JDK in production
86+
- Relying on `--release=<platform JDK>`\footnote{We still need to specify it}
87+
--- too superficial guarantees
88+
- JDK._stable_ in production --- third-party dependencies could trip us up
89+
90+
# New release strategy
91+
92+
## Versioning
93+
94+
- Java language: \$FEATURE.0.\$UPDATE (e.g. 11.0.1)
95+
- Java SE runtime: \$YEAR.\$MONTH (e.g. 18.10)
96+
- JRE: superseded by LTO via `jlink`
97+
- No more "major" versions
98+
99+
## Release plan
100+
101+
- Feature release every 6 months, starting March 2018
102+
- Features get updates for 6 months
103+
- Update release every 3 months, starting January 2018
104+
- I.e. 2 updates per feature
105+
- LTS feature release every 3 years, starting September 2018
106+
107+
## "Long-term" support
108+
109+
- "Updates available for at least three years, possibly longer"
110+
- ... but not from Oracle, unless we pay
111+
- Feature-to-feature upgrade "easy"
112+
- LTS-to-LTS upgrade "as difficult as 7-to-8 or 8-to-9"
113+
114+
# New licensing
115+
116+
## OpenJDK by any other name
117+
118+
\center\includegraphics{../media/openjdk.png}
119+
120+
## \href{https://openjdk.java.net/}{Oracle}
121+
122+
- OpenJDK
123+
- Gratis in production
124+
- No extended update period\footnote{Approximately 1 month to update to new
125+
feature release}
126+
- No support
127+
- Oracle JDK
128+
- Gratis for development, subscription license for production
129+
- Extended update period
130+
- Includes support
131+
132+
## \href{https://adoptopenjdk.net/}{AdoptOpenJDK}
133+
134+
- OpenJDK
135+
- Gratis in production
136+
- Best-effort extended update period
137+
- LTS updates by community, probably stewarded by ~~Red Hat~~ IBM
138+
- No support
139+
140+
## \href{https://www.azul.com/downloads/zulu/}{Azul}
141+
142+
- Zulu Community
143+
- Gratis in production
144+
- No extended update period
145+
- No support
146+
- Zulu Enterprise
147+
- Extended update period
148+
- additional concept of _medium-term_ support
149+
- Includes support
150+
151+
## Distro versions
152+
153+
- Comparable to AdoptOpenJDK
154+
- ... but be mindful of which _version_ is distributed
155+
156+
## Others
157+
158+
- Basically same story
159+
160+
# _Or else..._
161+
162+
## What if we don't get in line?
163+
164+
- We'll be increasingly vulnerable to exploits
165+
- People won't want to work for us
166+
- Alternatively, we'll expose ourselves to litigation
167+
168+
# Summary
169+
170+
## Summary
171+
172+
- Prioritized list of OpenJDK builds, subject to perspective on support need
173+
1. Distro OpenJDK
174+
1. AdoptOpenJDK
175+
1. Azul Zulu or Oracle JDK
176+
- Build for JDK._LTS_
177+
- Run on JDK._LTS_
178+
- Test on JDK._next_
179+
- Revisit in 12-18 months

notes/notes-sample.md

Lines changed: 0 additions & 81 deletions
This file was deleted.

plantuml.jar

7.12 MB
Binary file not shown.

wiki-issues.jpg

26.5 KB
Loading

0 commit comments

Comments
 (0)