19 March 2018

Oracle will remove Java FX from JDK

Oracle released a Java Client Roadmap Update.
Starting with JDK 11 Oracle plans to remove its little used Java FX desktop libraries from the JDK. Java FX will live on in the OpenJFX, which was created in 2011.
Java Webstart will also be removed from JDK 11.
Swing and AWT remain part of JDK 11.
Just as it handed over Java EE to Eclipse, it is looking to transfer  stewardship of Java FX, Swing and AWT to another party.
With java 9's project Jigsaw, Java became a modular system, making a separation of this part of Java easier.
As a consequence the JDK will become leaner and Oracle hopes to evolve it at a faster pace in the future.

Java EE becomes Jakarta EE

With the move of Java Enterprise edition from Oracle to the Eclipse foundation, Oracle did not transfer the right to use the Java brand.
The reference implementation will still be Glassfish, which now becomes Enterprise Glassfish.
The standard governance will move from JCP to the Eclipse EE.next  Working Group.

17 February 2018

Google Drive (finally) adds search within folder

My major gripe with google drive was that you could not search withing a folder.  As Google drive contains nearly all my stuff, the noise was so high that search was all but useless. Hard to understand that a company who's core business is search could not provide this. So I needed to use windows limited search on my locally synced files.
Then today, I noticed the in folder search feature had sneaked in.
Yahoo! Kudo's to Google!

4 January 2018

Windows 10 update fails: restart the installation

When rebooting after the Windows 10 (Fall Creators) upgrades I got a window with this error:

Windows could not complete installation. To install Windows on this computer, restart the installation.
Only button you have is [OK], so I hit that. The system reboots, only to get stuck on the same window again.

Option 1 (did not work for me)

If your PC has a recovery partition, normally that is Drive D: labeled recovery, you can reboot from there and revert to an earlier configuration of your computer.

Option 2 ( did not work for me): Advanced Startup

  1. Upon consecutive unsuccessful boots, Windows will show the Advanced Startup window. When your computer is booting and the windows logo appears, press the power button until the computer switches off. Do this two times. The third time, let the boot continue and the Advanced Startup window should come up.
  2. Choose Troubleshoot
  3. On the next screen, choose Advanced Options
  4. On the next screen, choose Startup Repair, and go through the procedure.
    After going through this, windows told me it could not repair my system.

Option 3 (worked for me): Create installable media

  1. On another computer download the media creation tool from Microsoft
  2. Plug an empty USB drive of at least 8GB in the computer
  3. Run the tool 
    1. Select: Create installation media for another PC
    2. Make sure the language, and architecture match the ones on the faulty computer. Change these options if necessary. They need to match the license on the target PC. Typically your architecture is 64 bit, but if you are not sure, check this on the faulty computer
      1. In the screen where the problematic computer is asking to reinstall type [SHIFT]+[F10]
      2. A command window will appear. On the command prompt type
        wmic os get osarchitecture
  4. Select USB Flash Drive
  5. Select the drive where the USB is mounted
  6. Start the creation. This takes a while. First the software is downloaded, then the image is written.
    1. The installation failed for me with
      error message: There was a problem running this tool.
      error code: 0x80042405 -- 0xA001A
    2. The solution was to first copy the  downloaded MediaCreationTool.exe to the USB drive and then run the program from the USB drive.
  7. On the problematic computer boot to the error window prompting for a reinstall
  8.  Plug in the USB drive
  9. Start a command prompt by pressing [SHIFT] + [F10] 
  10. Go to the USB drive by typing the drive letter, typically D:
    1. My drive was not mounted to D: (nor E:). I found out the drive letter using the command
    C:\>wmic logicaldisk where drivetype=2 get deviceid, volumename, description
     Turned out my drive was mounted to J: (!?)
  11. Type setup from the USB drive
  12. c:> J:
    J:> setup
  13. Go through the normal upgrade procedure (Choose install OS and Preqerve personal data and files).
    1. The upgrade took me about an hour.
Quite a lengthy process. Not very nice that Microsoft forces you to do the update, and after they've wrecked your system, leave you on your own. I would be interested how this turns out if someone takes them to court over this. Then again, their lawyers must have written a license that allows them to cripple your computer :-/

10 December 2017

Google Drive File Stream: Drive letter changing on Windows (bug + workaround)

Google is replacing Google Drive with Google Drive File Stream (GDFS).
With GDFS you can (finally) cherry pick the folders that are synchronized to your local Drive (default: none).
GDFS mounts all network shares by default to drive G (what did you expect?).
Under G you will find a folder for your personal Drive and another folder for team drives you are member of (new with GDFS).
If the G drive is taken, GDFS takes the H drive and so on...

Every once in a while GDFS mistakenly thinks the G drive is occupied and switches to H, next time it is back on G again... Very annoying if you have an absolute path reference to something on your drive (shortcuts, scripts...). The solution is a classic Windows trick: stop and restart:

  1. Go to your task bar tray, right click the GDFS icon and choose quit
  2. Start Drive File Stream again from the Start Menu.
Users are really annoyed by this bug, so let's hope it's fixed soon.

6 December 2017

Java 9 @Deprecated

That is to say: Java 9 enhances Deprecated.


The @Deprecated annotation has a new parameter forRemoval (default: false).
If the parameter is true, the item will be removed in a future version, according to javadoc.
This used to be the meaning of Deprecated in the beginning (when it was still a javadoc tag), but Java never actually removed anything marked Deprecated AFAIK.
That is, until Java 9, where some items effectively got pruned, to avoid cyclic dependencies in the new module system (in java.beans.PropertyListener).
Oracle says that, for Java SE, the intend is that something marked with @Deprecated(forRemoval=true) in Java 10, will be gone in Java 11 (ouch).

Suppressing warnings

Deprecation warnings are also impacted.
You can surpress compiler deprecation warnings with @SuppressWarnings(“deprecation”) in your code.
This does not work for imports, but that is a bug that is (finally) solved in Java 9.
On the other hand, In Java 9 the @SuppressWarnings(“deprecation”) will not work for @Deprecatedor(forRemoval=true). And rightfully so, given that people suppress the warnings because they assume nothing is going away any time soon.
 In Java 9, to suppress forRemoval=true warnings, use  @SuppressWarnings(“removal”).
To suppress both forRemoval=false and forRemoval=true, use @SuppressWarnings("deprecation", “removal”).