[2018 oracle code one] monday keynote

Monday keynote

For more blog posts, see The Oracle Code One table of contents


GitHub – Matthew McCullough

  • Project Skara – investigate alternative SCM and code review options – https://github.com/Project-Skara/jdk
  • Building a development community
    • Power of 1 – just do one thing
    • If everyone does, the global community makes progress
    • ”think small to accomplish more”
    • Java dominates
  • GitHub loves Java
    • Resque – redis
    • Webhooks  kestrel
    • Analytics – kafka
    • Hydro – all systems can be powered by same data structure – kafka – distributed log
    • Like Ruby but some downside. Each parallel process uses memory. Lack of strong typing, JVM dominates streaming ecosystem
  • Tools to support the effort
    • Looking to move some? All? JDK projects from Mercurial to Git
    • Showed a pull request, a comment and a static analysis check

Oracle (missed name)

Last year announced three commitments and met them

  • Provided closed source tech to Open JDK. Delivered Oracle JDK under Open JDK
  • Deliver enhancements and innovation more rapidly – 6 month release cadence
  • Enterprise long term support  $25/month/processor (or server) and $2.50/month/developer

Oracle (Mark Reinhold – Chief architect of Java platform)

  • Left behind slow release model [picture of elephant followed by cheetah for fast].
  • Worried about keeping up [picture of cat pounding keyboard]
  • Other languages release once or twice a year Java must to remain competetitive
  • Modules and internal APIs
    • Monoloithic. Removed some modules, but still large. Hard to clean up object graph. Originally needed Corba for hello world!
    • Can modularize existing app, but don’t have to. Might not be worth if for legacy app and that’s ok.
    • Three of high CVEs would have been prevented with modules. (That’s half of them.)
    • Prevents sun.* an .*internal.* packages. Treated as public because didn’t want to break. Modules prevent this problem by not exporting
    • JDK 9-11 will run internal APIs with warnings, but will no longer compile. Not sure when this will end, but will be Java 12 or later. In future release, will not run at al.
    • jdeps —jdk-internals my.jar – detects use of internal APIs. Even gives a suggested replacement where available
  • Finally started removing things from Java. Removed two modules in Java 11. Costly to maintain, source of several security vulnerabilities. Available elsewhere or irrelevant (CORBA). Also removed some APIs. Looked at use in the wild to confirm hardly anyone uses.
  • Deprecate for removal at least one release in advance and possibly more. This allows compier to warn you about it.
  • Release can contain anti-feature (feature removal)
  • Top misconceptions about new release model
    • Each release will be as disruptive – No. pace of innovation not changing. [agreed]
    • Non LTS releases are experimental – No.  its about support [agreed]
    • To remove an old feature, must be deprecated three years in advance. No. Just requires working build. [Mark said this last year. I don’t know anyone who built everything with Java 9/10]
    • Can ignore non-LTS releases if don’t migrate often. No. Should build each so ready for LTS [Mark said this last year. I don’t know anyone who built everything with Java 9/10]
  • I using Java 9+, update all your dependencies
  • Projects
    • Amber – right sizing language ceremony
      • Already have some type inference with generics and lambdas and var
      • Raw string literals in backslash. No need to backslash everything. Useful in regex!
      • This gives us multi line strings!
      • Java 12 preview feature – 99% done. Trying to get feedback. So need to turn on in order to use. But will be in Java 13 presumably
      • Switch case. Implies detecting if missed a case [this looks cool bt don’t understand how it works. Also a preview feature.
      • record – implies POJO – getter/setter/equal/hashcode. Can @Override to customize. Can’t add instance fields.
      • Pattern matching – avoid casts. Works well with switches
    • Loom  – continuations and fibers
      • Fiber – assgned to a thread when actually run it. Less resource intensive and less complicated than Threads.
      • Continuations – behind the scenes for implementing fibers
    • Panama – Foreign functional/data interface
      • JNI is intentionally slow
      • [I didn’t pay much attention to this as it isn’t a feature I use now]
    • Vahalla  – value types and specialized generics

Nevermore than 6 months/3 years of support. No. Depends on what community does [RedHat already spoke up]

My take: Fun fact. There’s a wifi hotspot in a box under the chair in front of me. Also Mark was awesome! Mark did have some “speaker note” issues which he handled well. I’m really excited about Amber. And I like that Mark did a live demo for Loom. Even though it didn’t work 100%, that’s ok because it’s very early software! Funny how the keynote was Mark and “opening acts for Mark”!

Leave a Reply

Your email address will not be published. Required fields are marked *