Announcing the New Java 17 1Z0-829 Certification Exam and Study Guides!

Scott and Jeanne are thrilled to announce that Oracle has finally announced the new Java 17 1Z0-829 exam! Having worked with Oracle to create the objectives, we’ve been anxiously waiting to let all of our readers know that we already have two books for the new exam well underway:

In fact, you can preorder the Java 17 Complete Study Guide now!

The exam is similar to the Java 11 1Z0-819 that preceded it. The following are some of the key changes Oracle has made to the new exam:

  • Sealed Classes and Records have been added
  • Switch Expressions have been added
  • Pattern Matching has been added
  • Text Blocks have been added
  • Math API is on the exam
  • Date/Time API is back on the exam (previously on the Java 8 exam)
  • Annotations and Security have been removed

We’ll post more details soon about the exam including when you can sign up to take it, as Oracle releases the information!

[kcdc 2021] Java 17’s Project Panama Newbies

This post is my live blog from KCDC. For more, see the 2021 KCDC live blog TOC

Speaker: Carl Dea (Azul)

Twitter: @carldea

————————-

Foojay.io has more

JEP 412 – Foreign Access API

  • https://openjdk.java.net/jeps/412 – ties together other JEPs
  • incubator module. Third incubabor
  • in making for at teast 6 years

Problems with old way

  • Communicating with required wrapper code and distributing a .ddl
  • Have to do a lo of work yourself to interfaces with C

URLs

  • jdk.java.net/panama
  • https://github.com/openjdk/panama-foreign
  • panama-dev@openjdk.java.net
  • https://foojay.io/today/project-panama-for-newbies-part-1/
  • https://foojay.io/today/project-panama-for-newbies-part-2/
  • https://foojay.io/today/project-panama-for-newbies-part-3/
  • https://github.com/carldea/panama4newbies

Using

  • java -version. Make sure says 17-panama. (Not part of main JDK)
  • jextract -h to get help
  • jextract will generate Java code for you by looking at C header file
  • Most important options
    • -I (capital Eye) – include file path
    • -d – destination for generate files
    • -l (lowercase ell) – specify a library
    • -t – target package
  • Must add incubator module and enable native access flag to run
  • Can call C methods from Java by importing them
  • Java wil hande the memory allocation/cleanup based on scope

Include

  • Copies file and puts in this file.
  • Not like import where it a reference

My take

This is a topic I knew nothing about. (Or forgot what I had known.) It was really cool to see!

Setting java aliases with zshell on Mac

When I’m working on different versions of Java, I set up a bunch of aliases so I can run commands quickly and compare differences. I recently upgraded my Mac and accepted the default shell as zshell instead of bash. (This change was made a long time ago but I didn’t upgrade for a long time because I didn’t want to incur the risk of being without my computer when everything was closed for the pandemic.)

Since I needed to move this from .bash_profile to .zshenv, I took the opportunity to shed a lot of them. I now have just Java 11 and Java 17 that I am using for comparisons. (LTS to LTS).

My .zshenv now contains this. (Yes, I know I should have patched Java 11, but alas.) I ran “source .zshenv” and am good to go.

Now I can run java11 JeanneTest.java and java17 JeanneTest.java to easily compare differences.

alias javac17=/Library/Java/JavaVirtualMachines/jdk-17-ea.jdk/Contents/Home/bin/javac
alias java17=/Library/Java/JavaVirtualMachines/jdk-17-ea.jdk/Contents/Home/bin/java
alias jar17=/Library/Java/JavaVirtualMachines/jdk-17-ea.jdk/Contents/Home/bin/jar
alias javac11=/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/bin/javac
alias java11=/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/bin/java
alias jar11=/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/bin/jar
alias jshell11=/Library/Java/JavaVirtualMachines/jdk-11.0..jdk/Contents/Home/bin/jshell
alias jdeps11=/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/bin/jdeps
alias jmod11=/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/bin/jmod

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-17-ea.jdk/Contents/Home"