Tag: Java
Build times finally reduced for JDK 1.6 on Windows
Sun’s JDK 1.6 had a nasty nasty bug on Windows that caused compile times to explode. It went unresolved for a very long time until the bug effected Glassfish and made it look bad!
Finally, we have relief, and can get back on a “modern compiler”!
Funny Java Standards
Swing is the GUI standard for Java. Clojure is the awesomeness standard for Java.
(via Stuart)
Java Control Flow: Do you really grok it?
Manu put out a challenge to it here.
Hindley–Milner, Wadler, and Java
Here is a video of Philip Wadler talking about his (and others) history with logic and programming languages.
jtracert
jTracert will allow you to generate sequence diagrams directly from your application runtime!
* This gives you a lot of advantages:
* Understand the code created by your colleagues/partners in a short time
* Rapidly generate documentation for your partners or users.
* Easily investigate what’s happening in large Java applications
* Excellent companion for a common debugger
Massively multiplayer online game with Java on a mainframe
HOPLON Infotainment write MMOG’s with Java on a mainframe. More here.
(via IEEE Spectrum Volume 45 Number 8, 2008)
Philosophy always comes down to the details
Here is a good post about language design philosophy and implementation details of inner classes in Java. The focus is more on the latter; and the article is still interesting.
Functional Java
Functional Java is an open source library that aims to prepare the Java programming language for the inclusion of closures. It also serves as a platform for learning functional programming concepts by introducing these concepts using a familiar language. The library is intended for use in production applications and is thoroughly tested using the technique of automated specification-based testing with ScalaCheck.
(via PLT)
Putting Java’s Null in its Place
Richard Cobbe’s thesis looks interesting:
Mainstream object-oriented languages include a null value that inhabits every object type and that pervades programs. It exists both because the language semantics requires it in certain places and because it is the most convenient representation for common patterns, such as for sentinel values indicating failure. Safety requires implementations of these languages to insert run-time checks throughout programs to determine whether object references are null at each field lookup and method call.
The ubiquity of null in object-oriented programs leads to severe engineering problems for programmers. First, the error messages issued by the run-time checks are typically not sufficiently informative to help the programmer find the source of the error. Second, the type systems in OO languages generally do not distinguish null from other values of (object) type, preventing the programmer from stating important invariants about the flow of null in the type system. Third, programmers’ standard use of null as a sentinel does not unambiguously represent failures. To resolve or avoid these ambiguities, component authors must incorporate additional complexity into their interfaces, and this complexity can lead to subtle bugs.
In this dissertation, we propose two changes to Java that allow us to completely remove the null value. Doing so addresses the problems above and provides significant engineering benefits to the programmer. Further, we demonstrate the practical feasibility of our proposal with a migration path that allows programmers to shift large codebases from Java to our new language, one class at a time.
(via LtU)