JBoss Data Virtualization Part 1 – Concept

Data Challenges

When you are only having a few applications, it is easy to integrate them using a point-to-point approach ie, each application connects to all the other applications directly to access the information. As the number of applications increases, using the point-to-point approach will result in a non-maintainable mess of spaghetti-like chaos as shown in the diagram below. You may reduce the integration complexity by either introducing an Enterprise Integration Bus (ESB) or by using Data Virtualization. It should be noted that this is not an either-or choice as ESB and data virtualization are the two sides of the same integration coin. ESB is used for application integration and data virtualization is used for data integration. They work together well. Complexity is not the only issue here, how about administering security? In using a point-to-point approach, you have to administer security or access control on each data source for each application. Also, many organizations store information eg, on a customer, using different applications and the information they store may differ slighly from application to application. This means that, depending on the system or application you query, you may end up with conflicting information on a customer. Continue reading JBoss Data Virtualization Part 1 – Concept

Building a BPMS Web Application Part 2: Remote Java API

(This article assumes some basic knowledge of the JBoss BPM Suite including using Business Central.)

In Part 1, I described how to make use of the BPMS form metadata, run it through a code generator to produce JSPs for the UI and Java ActionBeans to handle these JSPs (for process instantiation and manual task interaction). Although the code to integrate with BPMS eg, to kick off a process instance and interact with the human tasks can be found partially in the generated ActionBeans, how exactly it works is still shrouded in mystery. This article will solve the mystery. Continue reading Building a BPMS Web Application Part 2: Remote Java API

Building a BPMS Web Application Part 1: Code Generation

(This article assumes some basic knowledge of the JBoss BPM Suite including using Business Central.)

In a previous article, I described how to use the new jBPM Form API to build a BPMS web application. I also outlined a different approach in which code generation can be used to replicate the forms to the web application using the form metadata on the BPMS Execution Server. Although I provided a link to my OpenShift implementation of such a BPMS web application, the technical details on how this is achieved is still scarce. This article remedies that. Here is a recap on why we want to build a web front end to a business process. BPMS forms are generated and customised by business analysts when they create business processes. Few customers use the forms on the BPMS Execution Servers. They prefer to build a web application that interacts with the business process remotely running on a BPMS Execution Server so that fine-grained access control, consistent look-and-feel and better client interaction can be achieved. One way to do this is by using the new jBPM Form API and the other way is to use code generation to replicate the forms using the form metadata. Continue reading Building a BPMS Web Application Part 1: Code Generation

Java Parallel Programming Part 3: Lambdas and Streams

In my last article, I showed you how to use the Java 7’s Fork/Join framework to write a parallel program. If you examine the code carefully, you will notice that it looks quite different from normal serial Java code. Developers having to write code differently for parallel programs imposes a serious barrier to its wide adoption as a framework for writing parallel programs. What developers want is that they can write code that can be executed serially as well as in parallel. Enter lambdas and streams. The Java community has observed the trend (Moore’s Law, hitting the frequency wall ie, power dissipation issues as described in my previous article) and recognised that chip designers have nowhere to go but parallel. Consequently, software has to be written such that it can take advantage of the parallel hardware. And the OpenJDK Project Lambda was  started in Dec 2009 with the aims to support programming in a multicore environment by adding closures and related features to the Java SE platform. The objectives are realised in Java SE 8 as JSR 335: Lambda Expressions for the Java Programming Language. In this article, I am going to show you how to use lambdas and streams to implement a Mandelbrot generation parallel program and compare its performance with the Fork/Join framework we examined last time. Continue reading Java Parallel Programming Part 3: Lambdas and Streams

Java Parallel Programming Part 2: Fork/Join

This is the first of three posts on Java Parallel Programming using a Shared Memory Model after my introductory post on the subject . In this article, I shall show you how to use Java 7’s Fork/Join framework for parallel programming. As you are aware, multi-threading has been available since Java was first introduced in the last millennium. What’s the fuss regarding Fork/Join then? According to Herbert Schildt in his book “Java The Complete Reference Eighth Edition” (ISBN: 978-0-07-160631-8) on page 1077:


...multithreading is used to allow two or more tasks to share the CPU. This type of multithreading is typically supported by an object of type Thread (as described in Chapter 11). Although this type of multithreading will always remain quite useful, it was not optimized for situations in which two or more CPUs are available (multicore computers)...

In contrast to the usual multithreading model, the Fork/Join Framework introduced in Java 7 automatically scales to make use of multiple processors available. In addition, it simplifies the creation and use of multiple threads as you will see in the code segments later on. Continue reading Java Parallel Programming Part 2: Fork/Join

Java Parallel Programming Part 1: Introduction

The first question you have is probably: What is parallel programming and why? Parallel programming or computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved at the same time. In short, its main aims are to:

  • Increase speed
  • Process huge amount of data
  • Solve problems in real time
  • Solve problems in due time

Why now? Continue reading Java Parallel Programming Part 1: Introduction

Home Compute Cluster Revamp – Part 1

Introduction

High Performance Computing or HPC refers to the practice of aggregating computing power in a way that delivers much higher performance than one could get out of a single machine in order to solve large problems in science, engineering, or business. In the past, it was quite costly to build a HPC cluster. But with the ever diminishing cost of hardware, I built one some months ago for experimentation. It is now due for a revamp. But before I describe the revamp details, here is a recap on the existing HPC cluster which I shall refer to as my home Compute Cluster. Continue reading Home Compute Cluster Revamp – Part 1

Defending Hacking Attacks on My Home Server

After putting my home server online running my blog and other applications accessible from the Internet, I left it unattended for a few days and then I found that I couldn’t access my blog from the Internet any more. It has been attacked by hackers using Denial-of-service attacks. Hackers created a large number of half-open TCP connections to the server and established connections to the Apache Web Server. The latter caused the Apache Web Server’s Prefork Multi-Processing Module (MPM) to spawn the maximum number of Processes allowed. This combination brought the server performance to a stand-still. The DMZ I created appears to be holding up as I did not find any evidence on hackers breaking through my second firewall. Continue reading Defending Hacking Attacks on My Home Server

Building a JBoss BPMS Web Application using jBPM Form API

(This article assumes some basic knowledge of the JBoss BPM Suite including using Business Central.)

JBoss BPMS forms are generated and customised by business analysts when they create business processes. The forms are usually used for kicking off a business process instance and interacting with the user when the process reaches a user task eg, for a manager to manually approve a loan. Few customers use the forms on the BPMS Execution Servers. They prefer to build a web application that interacts with a business process remotely running on a BPMS Execution Server to gain fine-grained access control, consistent look-and-feel and better client interaction. The main issue is how to use the forms generated on the BPMS server from the web application. There was no easy way to do that until the recent release of JBoss BPMS 6.1. Continue reading Building a JBoss BPMS Web Application using jBPM Form API

Using Odroid XU4 CloudShell as My Home Server

For those who are not familiar with Odroid XU4 and CloudShell, Odroid XU4 is an ARM-based Octa core single board computer based on the Samsung Exynos5422 2Ghz Cortex A15 and Cortex A7 cores with 2 Gbytes of memory. CloudShell is a compact case for Odroid XU4 with a 2.2 inch TFT LCD and a USB 3 to SATA bridge for connection to a 2.5 inch SATA hard disk. The assembled CloudShell is shown in the diagram below.

The ARM big.LITTLE technology is ideal for a home server in that when the cpu load is low, it uses the power efficient A7 core(s) and when the load is high, it switches to use the high performance A15 core(s). It may use 1 core, more than 1 core or all cores at the same time depending on the load. This means energy saving in the long run.

This article is not an Odroid XU4 review. For that you can read this in-depth review here. This article describes my experience in using this wonderful little device. Continue reading Using Odroid XU4 CloudShell as My Home Server