JEEConf - Kiev, 2015 - Report

| Comments

It happened again - I attend JEEConf, May 22-23, 2015. And as usual it was inspiring. Also, I can say that “Scala” was the most dominated buzz word at this conference.

So, I attended the next talks:

  • Pragmatic Functional Refactoring with Java 8, by Richard Warburton Java 8 functional features were introduced here. And were shown how we can refactor OOP program in functional way. I can say it’s still a new way of thinking for Java developers.

  • Just what are you doing, HotSpot? by Gleb Smirnov - Gleb gave us several advices for understanding tricky HotSpot behavior and why we should read HotSpot sources.

  • Lessons from Implementing a Modern B2C System in Scala, by Yuriy Guts It was a case study talk about starting new project with Scala. The most interesting was the issues appeared during project development, team’s relationship with Scala, and Scala influences on non-Scala developers.

  • Spring Puzzlers, by Evgeny Borisov and Baruch Sadogursky - We can say that this topic is unique. At least I’m not aware of similar talks on other Java conferences. Spring Puzzlers is a variation of classic Java puzzlers, but in Spring. It’s really great collection of tricky Spring parts.

  • JVM Languages Q&A Panel with Jacek Laskowski, Baruch Sadogursky, Dmytro Mantula, Alexander Podkhalyuzin, Tomer Gabel We can say that this panel was Groovy vs Scala. There are no other “languages” on this talk.

  • Building an Enterprise-less online bank, Anton Keks - Anton doesn’t love bloated Spring and likes simple and clean solution. He doesn’t use Play Framework 2 on Scala because of slow compilation. Instead of this, he told us about his banking platform implemented on Play 1.3 and Java 8, and all other items included in his stack.

  • Everything you wanted to know about writing async, high-concurrency HTTP applications in Java, but were afraid to ask, by Baruch Sadogursky - Baruch shared his experience about implementing asynchronous file downloader in Java.

  • Scala Rock-Painting, by Dmytro Mantula - This talk was like Scala puzzlers and/or Scala tricky parts. Speaker also gave us several suggesting how we can learn Scala more effectively via practicing code katas and/or Anki flesh cards. This talk highlighted the “dark” side of Scala. Really, recommend it.

  • Groovy under Macroscope, by Sergei Egorov and Baruch Sadogursky - Sergei demoed us very hacky Groovy library MacroGroovy. It’s nice to see true Groovy hacker and his creature.

  • About concurrency abstractions with Observable’s, Future’s, Akka (actors) in Scala, by Jacek Laskowski - Jacek did Scala concurrency overview talk and highlighted other non-Akka libraries. It’s nice to know that there are other “good” way to do concurrency without Akka.

  • Node.js and Evented I/O Alternatives on the JVM, by Niko Köbler - I definitely heard about Avatar.js, but Niko told us that Avatar.js is dead and Oracle put development of Avatar on hold, i.e. full stop. As alternative were mentioned two solutions: DynJS an ECMAScript runtime for the JVM and Nodyn - Node.js compatible framework on JVM. It’s very interesting to see what will happen with them. Nodyn has strong RedHat support. Let’s hope it’s much stronger than Avatar.js had from Oracle.

  • Do we need JMS in 21st century? by Mikalai Alimenkou - The simple statements can be extracted from this talk: a) there are other non-JMS Message queues (MQs); b) we don’t need bloated JMS for every tasks; c) use right MQ for right job


  • JEEConf has dedicated JVM track: 50% of this track was occupied by Scala (7 talks). As for me this is the sign ;-) Scala bandwagon reached Ukraine.

  • Microservices everywhere. If you are not doing microservices - you should :-)

Yes, JEEConf is simply the best. XP Injection did amazing work.

Have fun, love Java!


Grails 2.5.0 Debug in IntelliJ IDEA

| Comments

I’ve been using Grails v.2.5.0 and tried to debug Grails app via traditional Intellij IDEA 14 Debug with no success.

To be short: using IDEA Debug allows us debug Grails build system only. Why?

Forked execution is configured via the grails-app/conf/BuildConfig.groovy file. The following is the default configuration:

grails.project.fork = [
   run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256], // configure settings for the run-app JVM

Based on this we should create two IDEA Run/Debug Configurations:

  • Create simple Grails Run configuration with --debug-fork parameter: run-app --debug-fork. E.g.

And run this Configuration. We should get the next output

Listening for transport dt_socket at address: 5005
|Server running. Browse to http://localhost:8080/TekDays

This socket address will be used for Remote connection.

  • Create IDEA Remote Configuration (Run/Debug Configuration -> Remote)

And run this Configuation. Now, we are able to debug our application.

The main idea is that we should have two running Configurations!