Tasker

In August, 2013 I published the Tasker Project on GitHub to illustrate the article I wrote for Java Magazine #123, Boosting applications with REST and Backbone.js .

Tasker is a web application using Backbone.js and Handlebars.js on the client-side and Play! over Java on the server-side. This application simulates a very simple Kanban board based on Agile methodologies. Basically, the board can have multiple projects, each project can have multiple stories and each story can have multiple issues, which can be either task, bug or enhancement.

The user can create and remove projects, stories and issues, and also move issues around 4 lanes representing its possible status: Backlog, In Progress, Verify and Signed Off.

Purpose

The main purpose of Tasker is to demonstrate important front-end concepts of nowadays about smart client-side applications, such as:

Client-side

  • MV* on the client-side with Backbone.js
    • REST-based models
    • views
    • routers
    • events
    • validation
  • Templating with Handlebars.js
    • Custom helpers
  • Using Bootstrap components
  • Using Font Awesome fonts
  • Writing LESS css
  • UI-level i18n
  • Responsive/adaptive layout

Server-side

  • Play! Framework as a modern, simple yet powerful back-end
    • models
    • views
    • controllers
    • REST-based routers
    • Google Clojure compilation and minification
  • Ebean as a simple ORM approach
    • JPA-based mapping
    • simple query language
    • evolutions
  • JSON manipulation with Flexjson
  • Unit testing with TestNG
  • Code coverage
  • Setting production profile
  • Deploying to Heroku

What do I need to know about HTML 5? [pt]

In July, 2013 I published an article (in Portuguese) in Java Magazine #116, sobre o HTML 5 as an alternative for development exclusively based on the server-side. This technology introduces and standardizes many innovative features on the browser or mobile device, in a safe, portable and native way.

Article What do I need to know about HTML 5? - DevMedia

Summary

HTML 5 emerged as a movement to leverage many features designed to better explore the client-side in web applications, which can be beneficial in a few scenarios. This movement introduces certain client-side features such as offline work, persistence, multi-threading, low-level network communication, reproducing audio and video without plugins, geolocalization and form validation. All those features will be addressed on this article, as well a brief comment about the Dashorn project, which aims to make it possible to run JavaScript directly on the JVM.

When is the subject useful

This subject is useful for Java developers which want to learn how to bring the desktop experience to web applications, reducing the response and navigation time, working without depending on any plugin and having just one client-side codebase independent of device and platform.

Understanding and optimizing the Garbage Collection - Part 3 [pt]

In April, 2012 I published an article (in Portuguese) in Java Magazine #104, about common problems in Java code which ignore how Garbage Collection operates, how to write code to optimize this process and how to analyse the heap memory status in runtime.

Article Understanding and optimizing the Garbage Collection - Part 3 - DevMedia

Summary

The article begins by reviewing JVM options to log the Garbage Collection process activities as well presenting the JConsole tool for a picture of the heap memory situation. Next, states about memory leaks and shows an example of a code with this problem, analysing its runtime execution on JConsole. Lastly, presents other subjects as the finalize() method, weak references and concludes suggesting some good practices.

When is the subject useful

The subject is very relevant to any Java developer, even though the consequences of a badly configured Garbage Collection process won’t be much evident in development environments, certainly will make the difference in production environments. It is important to understand the reasons that cause malfunctioning of the Garbage Collection and how to avoid those scenarios, using good practices for such.

Understanding and optimizing the Garbage Collection - Part 2 [pt]

In March, 2012 I published an article (in Portuguese) in Java Magazine #103, about the operation of the colletors from the JVMs Oracle JRockit (used by WebLogic Java EE application server), IBM Virtual Machine for Java (used by WebSphere Java EE application server), those ones which implement JSR-1 (also known as Real-Time Specification for Java or RTSJ) and Dalvik (used by Android devices).

Article Understanding and optimizing the Garbage Collection - Part 2 - DevMedia

Summary

This article begins by presenting the JVM Oracle JRockit and its heap memory configuration, its collectors and how to use them. Next, presents the JVM IBM Virtual Machine for Java, its heap memory configuration, its collectors and how to use them. From here, presents the JSR-1 specification and its concepts about developing real-time applications in Java, and demonstrates the operation of 5 real-time collectors. Yet, presents the JVM Dalvik and its challenges about Garbage Collection, as well its collector and improvements about memory management.

When is the subject useful

The subject is very relevant to Java developers which work with any of the aforementioned JVMs, to better understand the consequences of using these collectors in particular scenarios. Besides that, Java developers which don’t yet work with any of those JVMs can learn how those options manage to solve in a different way the same challenges the JVM HotSpot faces, adding to your knowledge.

Understanding and optimizing the Garbage Collection - Part 1 [pt]

In February, 2012 I published an article (in Portuguese) in Java Magazine #102, about the Garbage Collection process in Java, detailing how do the JVM HotSpot 6 and 7 collectors work and how to optimize their behavior through JVM options.

Article Understanding and optimizing the Garbage Collection - Part 1 - DevMedia

Summary

This article presents concepts and metrics about Garbage Collection in Java, as well the categorization of the heap memory in generations. Next, presents the JVM HotSpot 6 and its overall operation with Garbage Collection, as much as its customization through JVM options. From here, explains about each collector, how does it operate, its customization options and implementations, making a final comparison illustrating when is it more proper to use each one of the available collectors. Yet, presents JVM HotSpot 7 and its new collector, its overall operation and customization options.

When is the subject useful

The subject is very relevant to any Java developer, even though the consequences of a badly configured Garbage Collection process won’t be much evident in development environments, certainly will make the difference in production environments. It is important to understand the reasons that cause unexpected behavior in the Garbage Collection when operated by multiple processors and big data.

Design Patterns, enjoy moderately [pt]

In October, 2011 I published an article (in Portuguese) features as the cover of Java Magazine #98, about principles, discussions and reflections about using designing patterns, in order to help the reader to develop critical sense about them. This way, the reader can extract knowledge from himself in order to apply design patterns moderately.

Article Design Patterns, enjoy moderately - DevMedia

Summary

The article presents reflections about using design patterns, and shows some common causes for their misuse, besides some bad implementation examples. Next, introduces the GRASP principles and its relation with the design patterns, in order to guide the developer to use them adequately. Lastly, raises some questions to evaluate the implementation of a design pattern and considerations for the reader to develop critical sense.

When is the subject useful

The subject is useful for alerting the developer about the proper use of design patterns, which are solutions for certain problems, but could be problems for certain solutions. It is important to the developer know how to judge the usage of a design pattern in a particular context, evaluating its applicability and consequences, aiming for a optimal solution.

Books