Profile cover photo
Profile photo
Johan Mynhardt
1,070 followers -
I'm not one for one-liners, but: technology++ cats++ coffee++ java++ linux++ intellij++ git++ eclipse--
I'm not one for one-liners, but: technology++ cats++ coffee++ java++ linux++ intellij++ git++ eclipse--

1,070 followers
About
Johan's posts

Post has attachment

Post has attachment

Post has attachment
I'm not excited about Java 9. First impressions about the new Module System is that it will be more of a pain. I was not surprised by the indication of IBM and Red Hat to oppose the public review ballot, because I thought they had something on the complexities of the system. But, as this Open Letter by Mark Reinhold indicates, the module system they were after is something different - more complex.

Post has attachment
The simplest way to get developing, even on a Chromebook!

Post has attachment

Post has attachment

Post has attachment

Post has attachment

Post has attachment
Clojure's "bendable" language
Another next-generation functional language for the Java platform is Clojure. Clojure — an implementation of Lisp on the JVM — has a strikingly different syntax from most contemporary languages. Although developers easily adapt to the syntax, it impresses mainstream Java developers as odd. One of the best features of the Lisp family of languages is homoiconicity, meaning that language is implemented using its own data structures, allowing extension to a degree unavailable to other languages.

Java and languages like it include keywords — the syntactic scaffolding of the language. Developers can't create new keywords in the language (although some Java-like languages allow extension via metaprogramming), and keywords have semantics unavailable to developers. For example, the Java if statement "understands" things like short-circuit Boolean evaluation. Although you can create methods and classes in Java, you can't create fundamental building blocks, so you need to translate problems into the syntax of the programming language. (In fact, many developers think their job is to perform this translation.) In Lisp variants like Clojure, the developer can modify the language toward the problem, blurring the distinction between what the language designer and developers using the language can create. I'll explore the full implications of homoiconicity in a future installment; the important characteristic to understand here is the philosophy behind Clojure (and other Lisps).

Post has attachment
Wait while more posts are being loaded