30 August 2021

SequenceDiagram IntelliJ plugin

One of our KdG students pointed us to the SequenceDiagram plugin for the IntelliJ IDE. The plugin reverse engineers a method into a UML sequence diagram. You click on a method and get a graphical view of its inner workings and interaction with other objects.


 

It also has a nice solution for representing lambda's, something the UML standard does not have specific support for.

That's not all

  • from each method in the sequence diagram you can navigate back to your code. 
  • the method  numbers (which are more useful in a commuication diagrams) can be turned off in the preferences
  • exports to plantUML

The author is very responsive to issues submitted. I asked to make the return arrows optional and lo! in the the latest release there is an option to do so.

Only remark I have is that control flow frames (loop, alt) are not supported and everything is shown as one big, well, sequence. There is an issue related to this that is marked solved, but no milestone associated.

But this is a nice effort, and way better respecting UML conventions than IntelliJ's own class diagram generator.

UML links (updated)

2 August 2021

Java SE version history (updated)

Version Name Release Major new features
17 (LTS)

9/2021 sealed class
16
3/2021 record
15
9/2020 Text blocks
14
3/2020 Switch expressions
11 (LTS)

9/2018 HTTP Client and WebSocket APIs
Run (single file) source code
9
2016 JSR 294: modular JDK (Jigsaw)
Searchable javadoc
JAXB 2.3
8 (LTS)
Spider
3/2014 JSR 335: lambda expressions
Collections Stream Framework
JSR 310: Date and Time API
Compact profiles
JSR 308: annotations outside declarations (on usage)
7 Dolphin 7/2011 language (project coin): switch on strings, multi catch, try with autoclosing resources, empty generics (diamond operator), binary literal, underscores in numbers NIO.2 file handling
Fork/Join concurrency
JAX-WS 2.2 (SOAP 1.2, WS-I 2.0, metro 2.0)
6 Mustang 12/2006 JSR 223: scripting language support
JSR 224: JAX-WS2.0 (metro 1.x)
JSR 221: JDBC 4 (driver autoloading))
Perfomance enhancements in synchronisation and garbage collection
5 Tiger 9/2004 language (JSR 201): Enumerations, autoboxing, enhanced for loop, static import, vararg
JSR 175: Annotations
JSR 14: Generics
java.util.concurrent
java.util.Scanner
RMI automatic stub generation
1.4 Merlin 2/2002 language: assert
regular expressions
JSR 51: NIO
JSR 47: java.util.logging
JSR 54: JDBC 3 (metadata API, autogenerated keys, transaction savepoints, multiple || resultsets/statement)
security and cryptography
1.3 Kestrel 5/2000 HotSpot JVM
RMI/CORBA support
JNDI
1.2 Playground 12/1998 Collections
Swing
JIT compiler
Browser plugin
JDBC 2.1 (datasources, distributed transactions, connection pooling,RowSet, ResultSet backscrolling and updating )
1.1
2/1997 AWT events reorganisation
inner classes
JavaBeans
JDBC
RMI
reflection
1.0
1/1996
Here's an overview of Java EE versions

Google Drive: HOWTO copy a folder (containing Google docs)

For unclear reasons Google Drive does not support copying folders.

Workaround 1: copy the folders in your local Google Drive desktop environment and everything will be synced to your drive.

This does however not work for folders containing Google docs. Your desktop only has a link to the real thing that resides in the cloud. Local copying does not work on those links.

Workaround 2:

  1. From Google drive, download the folder to your local system. Google drive will convert all your google docs to their MS Office counterpart in the process. 
  2. Unpack the downloaded zip to a desktop folder that is synced to your Google Drive.