If you’ve been following my blog, you’ve probably noticed that I’ve been spending a lot of time with Kotlin of late. (For the curious, I really like it so far, but I haven’t done just a whole lot with it.) I’ve experimented with writing simple JSF and JAX-RS apps in it, largely to see if I can make it work. With those hurdles cleared, I’m trying something a bit more ambitious: a complete (if basic) Java EE application, written completely in Kotlin. Because I’m a sucker for a bad joke, I’ve dubbed the project KotlinEE. I’m not quite ready to walk through that application yet, but I what I would like to discuss now is an issue I ran into trying to get CDI working with Kotlin.
In keeping with theme of "use existing frameworks with Kotlin" and misleading titles, here’s a quick and dirty demonstration of writing JAX-RS applications using Kotlin.
There’s a chance that at least some of you saw the blog title and thought: "Ah ha! A Kotlin wrapper/helper for JSF!" and rushed over to check it out. If so, mission accomplished. :) This really isn’t anything that ambitious. Sorry. :)
At JavaOne this week, I spent a good deal of time talk to Hadi Hariri, Developer Advocacy Team Lead at JetBrains, about their Kotlin language. With my long background in Java webapps, I often reach for my webapp hammer when trying to learn a new language, so I asked Hadi what Kotlin library he would suggest. His answer, in a nutshell, was that the Java interop in Kotlin is so good, just use whatever you want, so I thought I’d put that to the test with a really simple JSF app. Here it is.
If you’re a Doctor Horrible fan, here’s something fun and goofy to start your week. No clue how they did it, but it’s hilarious. :)
(h/t to my brother)
I recently came across an interesting piece of code at work:
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
What struck me as odd was the
private qualifier and that the fact that
SimpleDateFormat is not thread-safe. Is the
odd attempt to work around concurrency issues, or was thread safety just overlooked? That led me to this question: Is a
still one instance per JVM, or does the
private actually change anything? My understanding was that this was a bug, but I thought I’d
write a test just to make sure.
On Monday, July 13, I will be leading the monthly OKC JUG session, whose topic this month is "An Introduction to Programming with Minecraft Mods". We’ll be using a modified version of the curriculum Arun Gupta has developed for this Devoxx4Kids program, with examples taken from the book he and his son wrote, Minecraft Modding with Forge: A Family-Friendly Guide to Building Fun Mods in Java.
Here is the announcement sent to the Oklahoma City tech community. If you’re in the area, come check it out!
My team at work was having some issues with IDEA and the Checkstyle plugin. Based on the error message, and without actually looking at the JARs, it seemed pretty clear that the issue was a JDK version issue. While I think this issue has been resolved, when I set up my Mac months ago, I was forced to install Java 6 in order to install IDEA, but, apparently, the new version of the Checkstyle plugin was compiled with a newer JDK (as it should be). Whether or not the Java 6 issue still exists with IDEA, you can make IDEA run on Java 8 pretty easily, and I’ll show you how to do it.
Recently, in the #glassfish channel on Freenode, a user was having trouble configuring GlassFish in a Docker environment. He was scripting the configuration
of the server, but was having trouble setting the admin user’s password, since the
change-admin-password command takes input from
Fortunately, there’s REST API for that. This
curl command will do what the user needs to do without any need for additional input:
curl -X POST \ -H 'X-Requested-By: YeaGlassFish' \ -H "Accept: application/json" \ -d id=admin \ -d AS_ADMIN_PASWORD=password \ -d AS_ADMIN_NEWPASSWORD=password2 \ http://localhost:4848/management/domain/change-admin-password
Once the password is set, this same command can be used to change the password, but
--user admin:$PASSWORD must be added to authenticate
I should note that I don’t think this is an officially supported way to execute asadmin commands. It works, but it may change, or it may go away.
I would say that Oracle may not support doing this either, but they don’t offer any support, so there’s no harm there. :) Also note that
AS_ADMIN_PASWORD has a typo in it that may be fixed in future releases of the server. Caveat emptor! :)
As I’ve noted in a previous post, I recently moved my blog from Awestruct to
JBake. This also allowed me to migrate the building and publishing of the blog contents to the
toolchain that I know pretty well (Maven). What bothered me, though, was that my POM defined the project as a
jar packaging type: the build produces no jar file and, in fact, doesn’t process any Java at all. What I wanted,
then, was to be able to define the lifecycle in such a way the the
compile phase didn’t try to compile anything,
install phase didn’t try to put anything in my local repo. Unfortunately, either I’m a bit dense, or the
documentation wasn’t very clear (it’s likely a combination of both :). At any rate, I finally had a eureka moment
late last night and figured it out. Here is a distillation of my findings.
For some time now, I have been using awestruct to power my blog, and, for the most part, I’ve been happy. However, I have found, especially on the Mac, the Ruby-based environment more difficult to setup than I would like. While I have solved this problem before, it presented itself once again when I was issued a Mac upon joining NetSuite. I can, of course, muddle through it, but I’m tired of fighting it, so I started looking around for an alternative and found JBake.
- Tips for Writing Pluggable Java EE Applications
- JSFTemplating and Woodstock: Component Authoring Made Easy
- Jason Lee in depth: Mojarra and Scales
- Jason Lee: Postmortem for JavaOne 2008
- International Environmental: A Cooling Company Which Prefers Hot Software
- IEC donates custom JSF component to Mojarra Scales