Programming .NET without Visual Studio

Back in 2013 I wrote about Programming .NET 4.5 without VS2012. The reason was that Microsoft had yanked its free compilers from the free Windows SDK, yet Visual Studio at the time did not offer a reasonable free option. The first point still holds, the second does not. You can now simply download the free … Continue reading “Programming .NET without Visual Studio”

Beware of Java’s inconsistent MIN_VALUE

An astute user of my Tektosyne library noticed that I had made a simple but disastrous copy-paste mistake regarding the floating-point versions of some basic algorithms, such as finding the maximum of an array of numbers. The integral versions initialize the return value to e.g. Integer.MIN_VALUE and then check for any greater values. I copied … Continue reading “Beware of Java’s inconsistent MIN_VALUE”

JavaFX DPI Scaling in Java 9

While porting my projects to Java SE 9 I noticed that the JavaFX team has slipped in some small but important changes concerning DPI scaling that appear to be only documented in the Java bug database, specifically JDK Bug 8091832. The entry for 2016-03-31 notes that the startup flag, defining the minimum display DPI … Continue reading “JavaFX DPI Scaling in Java 9”

Java 9 Incompatibilities

Last year I took a quick look at the newly released Java SE 9 but wanted to delay updating until the corresponding NetBeans version was out. Nothing happened, so that’s the first incompatibility to discuss, followed by JavaMail and JavaFX issues. NetBeans MIA(pache) After four months NetBeans is still in Apache incubator limbo with no … Continue reading “Java 9 Incompatibilities”

Effective Java (3rd ed.)

Effective Java — Joshua Bloch, Pearson Addison-Wesley 2018 (3rd ed.), ISBN 978-0-13-468599-1 This is not just the best book on Java, but one of the best I’ve read on any programming subject. Every Java developer will benefit from Bloch’s solid advice and thorough exploration of language and library quirks, on a par with classic namesake … Continue reading “Effective Java (3rd ed.)”

Programming Languages in 2017

Time for the annual collection of programming language news. Little has changed in terms of popularity rankings; the usual suspects dominate. JavaScript maintains its overall lead, except in the bizarro world of TIOBE. Established newcomers Go, TypeScript, and Swift continue making inroads but are still relatively niche. Kotlin (on which more below) might have a … Continue reading “Programming Languages in 2017”

Core Java 9 for the Impatient

Core Java SE 9 for the Impatient — Cay S. Horstmann, Pearson Addison-Wesley 2017 (2nd ed.), ISBN 978-0-13-469472-6 The Impatient series condenses the traditional monumental Core Java tomes (2,072 pages for Java SE 8) into a single book a quarter the size – 538 pages for Java SE 9, 480 pages for the first edition … Continue reading “Core Java 9 for the Impatient”

Java SE 9 First Look

Oracle has finally released Java SE 9, now available on the Oracle Technology Network. As usual the official end-user portal will switch versions later, so for now it still distributes Java SE 8u144. I have yet to install the JDK, as the corresponding NetBeans update was delayed by its transition from Oracle to Apache. … Continue reading “Java SE 9 First Look”

Java Performance Notes

There have been several remarkable articles on Java performance issues in the last couple of months. Those links tend to get lost on Twitter, so I wanted to compile them here with brief overviews. All articles are based on the OpenJDK which also underlies Oracle’s distributions. Java and SIMD Piotr Nowojski tests automatic loop vectorization, … Continue reading “Java Performance Notes”

Catching Java Assertion Errors

The Java assert statement can be used for conditionally checking program invariants. Assertions are enabled or disabled with the desired level of granularity by Java Virtual Machine flags, as described in the linked guide. So far, so similar to assertion facilities in other languages. However, whereas .NET Debug/Trace.Assert shows and logs a message by default, … Continue reading “Catching Java Assertion Errors”