Issue #427 “Bug with Dereferencing Array Types” seemed like just another bug. Submitted by a user last week (@Matt–), I didn’t think too much of it. But, as sometimes happens, appearances can be deceiving. In this case, the bug identified a flaw in the syntax of Whiley with respect to the treatment of cast . . . → Read More: A Story of Cast Expressions
Today, more then ever before, I/O dominates what software is about. Of course, it’s always been important but, with increasing bandwidths, I/O seems to be what most programs now spend most of their time doing. This leads to interesting questions about how, for example, to handle millions and millions of concurrent connections and we . . . → Read More: Input / Output and the Object-Oriented Paradigm
Recently, I was having a somewhat heated discussion with a friend about the Java I/O library (specificially java.io.*). His position was that the library is unnecessarily cluttered and verbose, and that I/O in C is much simpler and more productive. Whilst I agreed with some of that, I also argued that the Java I/O . . . → Read More: Comparing I/O in C with Java
Recently, I attended the annual Conference on Runtime Verification (RV2012) and gave a talk entitled “Profiling Field Initialisation in Java” (slides for the talk are here, and the paper itself is here). This is the work of my PhD student, Stephen Nelson, and he should take all the credit for the gory details. However, . . . → Read More: Profiling Field Initialisation in Java
Recently, I came across an interesting discussion of C++ versus Java performance over on Stack Exchange. There was also some good discussion of the article on Reddit which included a link to an interesting article from Google.
Understanding these languages from a performance perspective is important to me, as it impacts the design of . . . → Read More: Java versus C++ Performance
The latest release of Whiley (v0.3.16) includes (finally) a binary file format for the Whiley Intermediate Language (WYIL). You can think WYIL files are to Whiley, as class files are to Java, or CIL files are to C#. Furthermore, the existence of WYIL files implies there is a corresponding (albeit currently hypothetical) Whiley Virtual . . . → Read More: Reflecting on the JVM Class File Format
Recently, I’ve had the pleasure of working with Eclipse and trying to build a plugin. On the whole, I have to confess, I find that Eclipse is an extremely well-designed and considered piece of software. The biggest problem, I suppose, is that it is designed for a wide variety of tasks and this means . . . → Read More: Are Checked Exceptions Always Caused by I/O?
A problem I often encounter in Java is that I want to say “these two things are the same”, but Java won’t let me. Suppose I want to maintain an int array which is always sorted in my program. So, whenever I get one of these things, I can rely on it being sorted. Here’s . . . → Read More: Type Aliasing in Java?
We were having an interesting discussion the other day, and the issue of final classes came up. For some reason, it suddenly occurred to me that all classes should be final by default. That is, classes should be implicitly final, rather than requiring an explicit declaration. For example, the following should be considered invalid . . . → Read More: Final should be Default for Classes in Java
Thanks to Alex Potanin for pointing this out to me … it seems that [[Design by Contract]] is the most requested enhancement to the Java language. You can find the list of the top 25 RFEs here. A nice quote from the feature description:
I find it a shame that all the requests for . . . → Read More: Design by Contract is Most Requested Feature?