2009-01-31

2009-01-31 Saturday - Java Daemon Services

In the next week or so I want to come back and spend some time looking at the following tools:

Akuma
"This is a Java library you can use in your application to support Unix daemonization. By taking advantages of POSIX API, this library lets you fork your process into background with proper daemonization steps."


Java Service Wrapper
"The Wrapper makes it possible to install a Java Application as a Windows NT Service. The scripts provided with the Wrapper also make it very easy to install those same Java Applications as daemon processes on UNIX systems."

"The Wrapper correctly handles user log outs under Windows, service dependencies, and the ability to run services which interact with the desktop."


Apache Commons Daemon
Since 1994, the Java programming language evolved and became a valid tool to develop, other than applets and client applications, reliable and performant server applications. The major disadvantage of the Java platform is that still today the only portable way to start a Java application relies on a single point of entry: the public static void main(String[]) method.

Having a single-point of entry is a valid solution for client applications, where interactively a user can command to the application to quit (which can terminate the Virtual Machine process at calling the System.exit(int) method), but in those cases where the application is not interactive (server applications) there is currently no portable way to notify the Virtual Machine of its imminent shutdown.

A server application written in Java might have to perform several tasks before being able to shutdown the Virtual Machine process. For example in the case of a Servlet container, before the VM process is shut down, sessions might need to be serialized to disk, and web applications need to be destroyed.

One common solution to this problem is to create (for example) a ServerSocket and wait for a particular message to be issued. When the message is received, all operations required to shut down the server applications are performed and at the end the System.exit method is called to terminate the Virtual Machine process. This method, however, implies several disadvantages and risks: for example in case of a system-wide shutdown, it might happen that the Virtual Machine process will be shut down directly by the operating system, without notifying the running server application. Or, for example, if an attacker finds out what is the required message to send to the server, and discovers a way to send this message to the running server application, he can easily interrupt the operation of a server, bypassing all the security restrictions implemented in the operating system.

Most multi-user operating systems already have a way in which server applications are started and stopped, under Unix based operating systems non interactive server applications are called daemons and are controlled by the operating system with a set of specified signals. Under Windows such programs are called services and are controlled by appropriate calls to specific functions defined in the application binary, but although the ways of dealing with the problem are different, in both cases the operating system can notify a server application of its imminent shutdown, and the application has the ability to perform certain tasks before its process of execution is destroyed.

2009-01-31 Saturday - SOA Links

Arun Pareek's presentation posted on slideshare.net Open Source SOA

Infoq: Case Study: Success with SOA at CISCO
(original SOA Consortium article)

Infoq: Optaros and MuleSource Help Nespresso With Next-Generation SOA Solution

OPenESB > Project Fuji > About
Project Fuji forms the core component of Open ESB v3 effort and represents Sun's next generation open source integration runtime, focused on providing a lightweight, developer-friendly, and extensible platform for composite application development.

At the core of Project Fuji is a lightweight micro-kernel based on JBI (JSR 208) and OSGi. Packaged as an OSGi bundle, the micro-kernel can be installed in any OSGi R4 compliant runtime (such as Felix, Knopflerfish or Equinox), including GlassFish v3. JSR 208 support introduces a robust, message-based service bus to the OSGi environment and allows the wide range of existing JBI "components" (adapters and containers) to run in Fuji.

Developer experience is a primary focal point in Fuji as evidenced by the level of flexibility and accessibility offered in the platform. Starting with a rapid, top-down development language, IFL (Integration Flow Language), developers can quickly and easily generate an integration application using a domain-specific grammar. The service development model favors convention and configuration over boilerplate code and framework APIs, allowing integration developers to focus on the code that matters.





2009-02-16 Monday Update

JBI Introduction

2009-01-28

2009-01-28 Wednesday - Microsoft ILM Resources

As part of a SOA / Enterprise Architecture program for a client, I'm assisting them in researching and adopting Microsoft Identity Lifecycle Manager. Here are some resources that may be of some interest to others:

Identity Lifecycle Manager 2007 Home

Microsoft Identity Lifecycle Manager 2007 Frequently Asked Questions

ILM Fact Sheet (pdf)

David Lundell's ILM Best Practices blog

Felix Gaehtgens: First Analysis of Microsoft ILM 2


Integrating the Hitachi ID Management Suite with Microsoft ILM


TechRepublic: ILM 2007 Resources

Troubleshooting LDAP SSL connection issues between Microsoft ILM/MIIS & Novell eDirectory 8.7.3

NetPro’s MissionControl
"...MissionControl tracks ILM configuration changes in real-time, storing the information in a secure SQL database and providing meaningful change reports. "


Microsoft TechNet ILM Forum

An Introduction to Identity Lifecycle Manager 2

Craig McMurtry's blog

Chris Calderon's blog.identityjunkie.com

1dent1ty cHa0s <==...an INCREDIBLE trove of links and information!!!

Identity Management Extensibilitiy Samples

ILM 2 Custom WF Activity

Microsoft Help and Support: Identity Lifecycle Manager

Oxford Computer Group
Oxford Computer Group (OCG) is an IT services company that specializes in Identity and Access Management. OCG has consulting expertise, solution components and training courses.


Understanding the inner workings of SAP from MIIS (ILM) Perspective

Andre Durand

SourceID.org

PingIdentity.com

identity-des.com

Joe Kaplan

ADFS Product Support Blog

Shawn's MIIS/ILM Tricks

Shawn's MIIS/ILM Code Experiment

miisexperts.org
"...miisexperts.org, a community site dedicated to Microsoft Identity Integration Server (MIIS) and associated technologies such as Identity Lifecycle Manager (ILM)"


Alex Tcherniakhovski - Security

Kim Cameron's Identity Weblog

Jackson Shaw: Jackson's Identity Management & Active Directory Reality Tour Travelblog

Burton Group Blogs: Identity and Privacy

Nishant Kaushik's Talking Identity

2009-01-28 Wednesday - WCF References

My current client SOA / Enterprise Architect project will entail building a significant number of services using Microsoft .NET technologies. Here are some of the more interesting links to WCF resources that may be of interest to others as well:





What is the difference between WCF and other web services ?
http://stackoverflow.com/questions/412698/what-is-difference-with-wcf-and-other-web-services


Introduction to Windows Communication Foundation (WCF)
http://it.toolbox.com/blogs/paytonbyrd/introduction-to-windows-communication-foundation-wcf-16539





Looking at the WCF Windows Communication Foundation
http://www.codeguru.com/csharp/csharp/cs_webservices/tutorials/print.php/c13215


WCF 101 – Creating and consuming a basic WCF Service hosted in IIS
http://blogs.msdn.com/tess/archive/2009/01/12/wcf-101-creating-and-consuming-a-basic-wcf-service-hosted-in-iis.aspx





MSDN Webcast: Beyond the Endpoints with Windows Communication Foundation with Juval Lowy

MSDN: Windows Communication Foundation
http://msdn.microsoft.com/en-us/library/ms735119.aspx






WCF Contract Design Guidelines
http://blogs.conchango.com/simonevans/archive/2007/04/22/WCF-Contract-Design-Guidelines.aspx



WCF Security Guidelines
http://www.codeplex.com/WCFSecurityGuide/Wiki/View.aspx?title=WCF%20Security%20Guidelines&referringTitle=Home



MSDN Forums: Windows Communication Foundation
http://social.msdn.microsoft.com/forums/en-US/wcf/threads/






A New Foundation: Taking a Look at WCF
http://www.code-magazine.com/Article.aspx?quickid=060123



WCF Design Pattern: Generic Service
http://it.toolbox.com/blogs/paytonbyrd/wcf-design-pattern-generic-service-19027





Get Familiar With Windows Communication Application Development
http://www.certmag.com/read.php?start=0&in=3529


Implementing a Basic HelloWorld WCF (Windows Communication Foundation) Service
http://www.packtpub.com/article/implementing-basic-wcf-windows-communication-foundation-service


Patterns for Flexible WCF Services
http://www.designpatternsfor.net/default.aspx?pid=99






A comprehensive guide to using MsmqIntegrationBinding with MSMQ 3.0 in WCF
http://blogs.conchango.com/simonevans/archive/2007/09/17/A-comprehensive-guide-to-using-MsmqIntegrationBinding-with-MSMQ-3.0-in-WCF.aspx

WCF Debugging and a WCF review
http://sarafianalex.wordpress.com/2008/06/17/wcf-debuging/

Building a two-way WCF prototype using HTTP based transports
http://drazen.dotlic.name/weblog/archive/2007/04/25/929.aspx

WCF Service Factory Pattern - The Problem
http://it.toolbox.com/blogs/alexexmachina/wcf-service-factory-pattern-the-problem-24857
"...you can't base a WCF service hosted within IIS that uses generics in its operational contract definition because WSDL wants the explicit type definition. This means that instead of a single, clean interface with the generic parameter and a single implementation of that contract, you have to define a strongly typed contract definition and implementation for every business object you plan to support."
(...)
"...Read Programming WCF Services by Juval Lowy, ch. 3, page 120 for more info regarding serialization and generics."



Udi Dahan: WCF Everywhere? Not on my watch.
http://www.udidahan.com/2007/12/29/wcf-everywhere-not-on-my-watch/

Why you should not use the ADO.NET Entity Framework
http://www.kindblad.com/2009/01/11/why-you-should-not-use-the-adonet-entity-framework/

Oracle: Interoperability with Microsoft WCF/.NET
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webserv_intro/interop.html





WCF 101 – Creating and consuming a basic WCF Service hosted in IIS
http://blogs.msdn.com/tess/archive/2009/01/12/wcf-101-creating-and-consuming-a-basic-wcf-service-hosted-in-iis.aspx

WCF Essentials—Applying the ServiceContract attribute
http://en.csharp-online.net/WCF_Essentials%E2%80%94Applying_the_ServiceContract_attribute

Some WCF Gotchas
http://devpinoy.org/blogs/cruizer/archive/2008/10/05/some-wcf-gotchas.aspx


NHibernate and WCF is Not a Perfect Match
http://weblogs.asp.net/jdanforth/archive/2008/12/22/nhibernate-and-wcf-is-not-a-perfect-match.aspx

http://blogs.conchango.com/simonevans/default.aspx

WF / WCF 4.0

"...I was genuinely surprised by how good WF 4.0 looks. In fact, I'd say it was the best thing I saw at PDC in many ways. This was surprising to me, because I never liked WF 3 or 3.5, because it did not feel finished, and had some fundamental flaws like:

* Poor performance
* Lack of persistence control
* Lack of transaction control
* No correlation support
* Poor threading model for parallel tasks
* Weird XOML based markup
* Not really tied in nicely with WCF (even in 3.5)
* Host problems

So it was great to hear Microsoft say that they agreed! Reading between the lines it is clear that WF4 is a complete rewrite. Microsoft already claim that it is between 10 and 100 times faster than WF 3.5. Persistance control (complete with message box and tracking databases), transactions, correlation and threading have all been addressed and the object model (now under the System.WorkflowModel) now feels very natural to anyone who has used WCF to a point where they feel like the same framework. And for anyone who's used to WPF and Silverlight, you can now model workflows in XAML (including building your own designers - nice). All of this coupled with what was shown (e.g. not much) of Dublin (the new Windows Application Server) make me conclude that hosting issues have also now been addressed...."





Microsoft's Patterns & Practices Application Architecture Guide 2.0

2009-01-27 Tuesday - Ubuntu Pocket Ref. Guide

Ubuntu Pocket Reference Guide (pdf)

2009-01-26

2009-01-26 Monday - Application Configuration Research

I'm working on a client Enterprise Architecture framework library, and I've spent some time today researching differrent approaches to implementing Application Configuration mechanisms, for both C# .NET and Java.

Ideally we want to establish a simple, light-weight, abstraction layer that will provide a stable (and common class model) for both Java and .NET developers across the enterprise.

.NET C# References

.NET Framework (3.5) Class Library System.Configuration Namespace
http://msdn.microsoft.com/en-us/library/system.configuration.aspx

MSDN - .NET (3.5) Framework Class Library ConfigurationManager Class
http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx

Enterprise Library 4.0 - May 2008 The Enterprise Library Core
http://msdn.microsoft.com/en-us/library/cc511812(printer).aspx#Core_Configuration

Read/Write XML files, Config files, INI files, or the Registry
http://www.codeproject.com/KB/cs/readwritexmlini.aspx

Persisting configuration items in .NET
http://stackoverflow.com/questions/176709/persisting-configuration-items-in-net




Java References

Java Tutorials > Configuration Utilities > Properties
http://java.sun.com/docs/books/tutorial/essential/environment/properties.html

java.util Class Properties
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html

IBM DeveloperWorks - Easing configuration
http://www.ibm.com/developerworks/java/library/j-configint/index.html

Java Configuration File vs. .NET Configuration File
http://programmersjournal.blogspot.com/2008/09/java-configuration-file-vs-net.html

Java Service Wrapper - Configuration Property Overview
http://wrapper.tanukisoftware.org/doc/english/properties.html

Simple Java Configuration Files and no XML in Sight
http://www.bartbusschots.ie/blog/?p=360

XML Configuration for Java Program
http://twit88.com/blog/2007/09/18/xml-configuration-for-java-program/


Jfig - Java
http://jfig.sourceforge.net/

Managing Your Configuration with JFig
http://www.developer.com/java/other/article.php/10936_3334271_1


Apache Commons Configuration
http://commons.apache.org/configuration/

http://commons.apache.org/configuration/howto_properties.html

http://commons.apache.org/configuration/user_guide.html

http://commons.apache.org/configuration/howto_xml.html#Hierarchical_properties

http://commons.apache.org/configuration/howto_properties.html#Properties_files


Automated Model-based Configuration of Enterprise Java Applications
http://www.swen.uwaterloo.ca/~kczarnec/edoc07.pdf

Java - Using Multiple Configuration Files in Your Application
http://twit88.com/blog/2007/11/30/java-using-multiple-configuration-files-in-your-application/

Spring Source JavaConfig
http://www.springsource.org/node/815

see Application Configuration
http://www.springframework.net/docs/1.2.0-M1/reference/html/javadevelopers.html

More on Java Configuration
http://blog.springsource.com/2007/06/05/more-on-java-configuration/

Java Config (a sourceforge project)
http://javaconfig.sourceforge.net/

Discussion thread: Java configuration framework
http://stackoverflow.com/questions/25765/java-configuration-framework

Open Source Configuration Deployment Frameworks Written in Java
http://www.manageability.org/blog/stuff/configuration-deployment-frameworks-in-java

Dynamic Configuration Management For Clustered Java EE Application
http://www.ashishbanerjee.com/dyna-config-25may07.pdf

Application configuration files using a custom JNDI object
http://www.caucho.com/resin-3.0/resource/tutorial/jndi-appconfig/index.xtp

Java Configuration Blues (circa 2003)
http://today.java.net/pub/a/today/2003/10/10/configurationblues.html

2009-01-17

2009-01-17 Saturday - XML Binding Background Material

I'm researching some XML Binding issues for a client and have assembled some references that may be of interest to others...

In particular, after reviewing the rest of the material below, you'll want to come back and pay careful attention to this article:

The BindMark XML Binding Performance Benchmark (for Java)
https://bindmark.dev.java.net/old-index.html

Although the BindMark performance benchmark is a bit dated - it is a helpful reference to illustrate the point that there are sometimes significant performance versus ease-of-use trade-offs to be considered in the evaluation and selection of tools.


wikipedia.org XML data binding
http://en.wikipedia.org/wiki/XML_Data_Binding


Altova: XML Schema Driven Code Generator
http://www.altova.com/features_code.html

MSDN: How to: Bind to XML Data Using an XMLDataProvider and XPath Queries
http://msdn.microsoft.com/en-us/library/ms749287.aspx

MSDN: How to: Use XML Namespaces in Data Binding
http://msdn.microsoft.com/en-us/library/ms752047.aspx

Schemaless C#-XML data binding with VTD-XML
http://www.codeproject.com/KB/XML/schemaless_binding.aspx

ADCG (Automatic Data Class Generator) is a tool written to speed-up the writing of C# XML class structures.
http://www.adcgtool.com/

XML Data Binding, A closer look at XML Data Binding, including a product appraisal, by Simon Sprott
http://www.codeguru.com/csharp/.net/net_general/toolsand3rdparty/article.php/c7365

Article: Schema for Web Services – Part I: Basic Datatypes
http://www.infoq.com/articles/schema-for-ws-part1

JiBX: Binding XML to Java Code
http://jibx.sourceforge.net/

Java-XML Binders Compared (a bit dated, but perhaps still interesting)
http://technology.amis.nl/blog/321/java-xml-binders-compared

A closer look at XML Data Binding, including a product appraisal
http://www.codeproject.com/KB/cpp/XML_Data_Binding.aspx

Validate against XML Schema using JAXB2
http://jroller.com/javaton/entry/validate_against_xml_schema_using

Validate against XML Schema using JAXB2 and spring-xom
http://www.jroller.com/javaton/entry/validate_against_xml_schema_using1


Patterns and Strategies for Building Document-Based Web Services: Part 1 in a Series
http://java.sun.com/developer/technicalArticles/xml/jaxrpcpatterns/index.html

nteroperability With Patterns and Strategies for Document-Based Web Services: Part 2 in a Series
http://java.sun.com/developer/technicalArticles/xml/jaxrpcpatterns2/index.html

Realizing Strategies for Document-Based Web Services With JAX-WS 2.0: Part 3 in a Series
http://java.sun.com/developer/technicalArticles/xml/jaxrpcpatterns3/



XML and Java technologies: Data binding, Part 1: Code generation approaches -- JAXB and more
http://www.ibm.com/developerworks/xml/library/x-databdopt/


XML and Java technologies: Data binding, Part 2: Performance
http://www.ibm.com/developerworks/xml/library/x-databdopt2/


XML and Java technologies: Data binding Part 3: JiBX architecture
http://www.ibm.com/developerworks/xml/library/x-databd3/

XML and Java technologies: Data binding Part 4: JiBX Usage
http://www.ibm.com/developerworks/xml/library/x-databd4/

Glassfish: How we Lost and Regained WS Performance -- JAXB Performance Tips
http://blogs.sun.com/theaquarium/entry/how_we_lost_and_regained

Kohsuke Kawaguchi : A few tips to write efficient code without bending over backwards
https://wsit.dev.java.net/servlets/ReadMsg?list=dev&msgNo=66

Java Architecture for XML Binding (JAXB) FAQs
https://jaxb.dev.java.net/faq/index.html

2009-01-17 Saturday - Deployment Tool Research

I'm doing some further research on deployment tools, here are a few links and resources I've come across recently:

Colin Low (with updates by Julio Guijarro: SmartFrog Tutorial - (Hewlett Packard Laboratories, Bristol)
Let us suppose you are developing an application with several autonomous components. These components could be parts of a distributed application, with components distributed across multiple hosts. It is necessary to test the individual components, and you realise that to test component1 you will need to have each of component2 to component7 in place. Whenever you run a test, you will have to activate seven components with all the correct configuration parameters. You may have to carry this out dozens of times until testing is complete.


Ritu Sabharwal: Grid Infrastructure Deployment using SmartFrog Technology - (Hewlett-Packard (STSD), Bangalore, India)

smartfrog.org/

sourceforge.net/projects/smartfrog/




Wojtek Goscinski and David Abramson, School of Computer Science and Software Engineering, Monash University, Victoria, Australia
Application Deployment over Heterogeneous Grids using Distributed Ant
Abstract
"The construction of large scale e-Science grid experiments presents a challenge to e-Scientists because of the inherent difficulty of deploying applications over large scale heterogeneous grids. In spite of this, user-oriented application deployment has remained unsupported in grid middleware. This lack of support for application deployment is strongly detrimental to the usability, evolution, uptake and continual development of the grid. This paper presents our motivation, design and implementation of the Distributed Ant user-oriented application deployment system, including recent extensions to support application deployment over heterogeneous grids. We also present a significant Distributed Ant deployment case study, demonstrating how a user-oriented application deployment system enables e-Science experiments."

Proceedings of the First International Conference on e-Science and Grid Computing

Pages: 361 - 368
Year of Publication: 2005
ISBN:0-7695-2448-6





Its also useful to look at how large vendors implement their deployment tooling/strategy:

Oracle® Containers for J2EE Deployment Guide, Using OC4J Ant Tasks for Deployment

WebSphere Application Server documentation




Ant in Anger: Using Apache Ant in a Production Development System, by Steve Loughran

2009-01-12

2009-01-12 Monday - Linux KVM Virtualization

As soon as I have a free weekend, I am going to backup my Vista laptop (and create an ISO image?) - and then I am going to format the hard drive and wipe every trace of Vista off of it. Then I am going to install a Linux distro.

Installing KVM virtual machines




Updates:

2009-01-13
Ubuntu on a Thinkpad T500

2009-01-11

2009-01-11 Sunday - Cloud Computing

http://cloudcomputing.sys-con.com/

Is Cloud Computing the Wave of the Future?

"Start Taking Cloud Computing Seriously" - Gartner's Advice to CIOs for 2009

“You will need to start leading your organization safely in this inevitable direction, or risk being sidelined by its progress”



Barton George's blog ("Mapping Processes in the Clouds")

Mosso (Cloud hosting) - recently(?) acquired by RackSpace...

The Future of Technology and the Cloud in the Next 20 Years
(SYS-CON.TV Interview with Bill Coleman - Founder, Chairman & CEO of Cassatt Corp)




Here's my take:

Cloud Computing Risks
- Financial viability of the cloud vendor(s)

- System availability of the cloud vendor(s)

"Salesforce.com's SAAS CRM apps went down Jan. 6 in a nearly 40-minute outage...the problem thwarted over 177 million transactions"

http://trust.salesforce.com/trust/status/


- Lack of maturity around cloud computing technology and standards

- New learning curves for development staff

- Availability of stable/mature development tools, libraries, frameworks

- Loss of control over management of critical performance SLAs to business units

- Security vulnerabilities are increased


Cloud Computing [Potential] Rewards
- Higher ROI for new software development efforts

- Lower operating costs (hardware, software, people)

- Increased agility

- Increased innovation

- Increased global collaboration

- Reduced time-to-market

- Reduced start-up costs for new ventures

2009-01-10

2009-01-10 Saturday - GSA Resources

GSA Home

GSA eLibrary

GSA Purchasing Programs

GSA - Getting on Schedule

GSA Schedule Solicitations

GSA Center for Acquisition Excellence

GSA eOffer
"eOffer is a tool to submit contract offers and contract modification requests to GSA Federal Acquisition Service online"


Multiple Award Schedule (MAS) Express Program
"The Multiple Award Schedule (MAS) Express Program, a specialized program established under the GSA Schedules Program, is designed to simplify, streamline, and ultimately accelerate the process for vendors to obtain MAS contracts (also known as GSA Schedule and Federal Supply Schedule contracts). Under the GSA Schedules Program, GSA establishes long-term governmentwide contracts with responsible firms to provide customers with access to a wide variety of supplies (products) and services."


FedBizOpps.gov

Central Contractor Registration (CCR)
"Central Contractor Registration (CCR) is the primary registrant database for the U.S. Federal Government. CCR collects, validates, stores and disseminates data in support of agency acquisition missions."


Online Representations and Certifications Application (ORCA)

IT Schedule 70
"The Information Technology (IT) Schedule 70 was established by GSA to assist federal government agencies with their procurement of IT products, services, and solutions as needed to meet their agency IT missions."


GSA Schedules Contract Training (SBU)

Office of Small Business Utilization Overview

Disaster and Emergency Operations Vendor Profile (GSA Form 3685)

Doing Business with GSA (pdf)

Forecast of Contracting Opportunities

General Service Administration Acquisition Manual (GSAM)

Federal Acquisition Regulation (FAR)

The Small Business GWAC Center's Newsletter, Small Business In Focus

Subcontracting Directory
This directory is published as an aid to small business concerns seeking subcontracting opportunities with General Services Administration (GSA) prime contractors.


GSA Vendor Support Center

GSA Office of Small Business Utilization
Current NAICS Codes

2009-01-10 Saturday - Screen Linux Utility

Screen for beginners

Kernel Based Virtual Machine

2009-01-10 Saturday - Links of Interest

Workflow Orchestration Using Spring AOP and AspectJ


Enter The JBoss Matrix: Where JBossians blog

I came across a sparse, yet interesting, blog today, nowheretohide.org that is focused on IT topics related to: "Technology and Business Processes for Law Enforcement and National Security"

Call for Papers: Cutter IT Journal issue The Convergence of Information Security, Privacy and Compliance
Abstract Submission Date: 23 January 2009
Articles Due: 6 March 2009

SaaS User Satisfaction Skyrockets to a Whopping 97%

Closures have been excluded from Java 7, but here's some information that may still be of interest: Closures for the Java Programming Language

2009-01-10 Saturday - Integration Case Study

I've recently completed the integration of another major interface for a client engagement.

Business Objective

To provide construction project managers (that are managing multi-year, multi-million dollar projects) with critical financial data integrated into their project management and planning tools.


Technical Challenges

The data required originated in a mainframe legacy financial accounting system (e.g. CICS/MVS, COBOL/VSAM, NATURAL/ADABAS).

The 3rd party vendor's project management application stored data in a Microsoft SQL Server database, but the vendor absolutely advised against direct data access (e.g. using Informatica type integration tools) to manipulate the database (due to significant business rules that must be applied to ensure the integrity of the project management system's data).

The vendor's integration API was Java based - the client organization had no internal Java expertise - and thus no Java development tools, processes, or standards.


Best Practices Introduced

Established an [internal] wiki site (TikiWiki) as an "information radiator" to communicate the status of the integration development effort with various organizational units (e.g. Operations, Project Management, Support, Business Analysts). The wiki was also used to document Java development best practices, standards, and lessons learned.

Wrote a daily [internal] blog (TikiWiki) to document and communicate the techniques used, problems encountered, solutions devised, resources and references leveraged, and the ongoing progress of the development effort.

Established a bug/issue tracking system (FlySpray).

Introduced an Agile iterative development approach for the design/construction effort.

Established a Software Configuration Management process with documented and easily repeatable processes leveraging Subversion and Ant.


Approach

Conducted mentoring and formal training on the new tools introduced

Developed a high-level design using Sparx System's Enterprise Architect

An existing Informatica data warehouse feed was utilized as the authoritative source for the required data.

Developed a core Enterprise Architecture library of reusable components for current/future interface development:
- Application Context
- Application Configuration
- Batch Service Processing
- Reporting
- Enterprise Consolidated Logging
-- Integrated with Windows Event Logging
-- Integrated with Microsoft MSMQ
-- Integrated with Log4j
- General Purpose Utilities
~6,000 lines of Java code


Developed a core application-specific (project management) library of reusable components for current/future interface development:
- Business Domain Abstractions
- Discrete Units of Work Components
- Business Process Services (Aggregated Units of Work Components)
- Orchestration of Business Processes
- API Session Management wrapper
~3,000 lines of Java code

Developed the interface specific integration components:
- Interface-specific Business Rules
- Data Validation
- Job Service Orchestration
~3,000 lines of Java code


Tools/Components Used

Sparx Systems Enterprise Architect

TikiWiki
- Wiki
- Blogs

FlySpray
- Bugs
- Issues
- Feature Request

Apache Commons

Apache log4j

Apache Web Server
- WebSVN

Subversion
- statSVN
- TortoiseSVN

Eclipse Ganymede IDE
- Subclipse

Sun Microsystems Java SE 5 (JDK 1.5)
- Version of the JDK dictated by the vendor's API requirements

JUnit

Ant


Glassfish JEE Application Server

Hudson
- Continuous Integration Build Server

FindBugs

PMD


Lessons Learned

Using PMD and FindBugs was a significant factor in elevating the quality of the code.

Using Hudson for Continuous Integration Build - and JUnit for automated unit testing - allowed for rapid iteration, testing, and deployment to a development server environment.

XMLs Impact on Performance: This interface processes a significant amount of data. The vendor's integration API heavily uses XML internally. One line of code was found to be responsible for an execution time for a single project's data that was (5x) more than expected. Minimizing the number of properties requested for retrieval from the API (thus reducing the size of XML involved) reduced execution time to (x) for that step in processing.

The vendor's naming conventions differed (sometimes substantailly) between their API business objects and their database tables/columns. A common ontology would have been very beneficial.

2009-01-10 Saturday - JVM Options

I'm doing some research on the performance characteristics of various components in the Java Collections library - and needed to tweak my test scenarios with some JVM options. The following web site is a handy reference to keep in mind for future reference:
A Collection of JVM Options, compiled by: Joseph D. Mocker (Sun Microsystems, Inc.)

2009-01-08

2009-01-08 Thursday - Git vs. Subversion?

Git Home: git-scm.com

Several senior level developers in my professional network have adopted Git as their source code management system. I haven't had much time to investigate/evaluate Git, but I am interested in learning more about it. This posting will be my placeholder for my Git research.

Git was originally created by Linus Torvalds to replace BitKeeper as the version control system for the Linux kernel.

Wikipedia.org: Git

Git User's Manual


Git's Major Features Over Subversion

My initial conclusion is that the relative lack of maturity of Git integration in popular IDEs is the limiting factor in my consideration of whether to adopt Git.




Updates:

Slashdot: Git Adoption Soaring; Are There Good Migration Strategies?

DVCS adoption is soaring among open source projects

GNOME DVCS Survey results
- Many different kinds of revision specifiers

A tour of git: the basics

Repository formats matter [?]

Why Git is better than X?




Git Resources

http://gitorious.org/




2009-01-31 Updates:

R. Tyler Ballance's blog:
"I'm using Git because it makes me feel cool"

"Delightfully Wrong About Git"





2009-02-18 Updates:


github.com - free git repository hosting

Guides: Using the EGit Eclipse Plugin with GitHub

2009-01-06

2009-01-06 Tuesday - SOA Debate

Anne Thomas Manes: SOA is Dead; Long Live Services

Debate: Is SOA Dead?

Linthicum weighs in...

Mike Kavis: Did SOA die or do we just suck at architecture?

Doug Barry: (The Acronym) SOA is (Perhaps) Dead (at Some Companies); Long Live Services

Miko Matsumura, of Whatever-you-want-to-call-it Center? SOA is Dead, long live Whatever!

From January 2005, I found this gem in the comments on John Reynold's blog:
"I've decided that saying "Service-Oriented Architecture" is like saying "Food-Oriented Lunch" -- it sure sounds good when you're hungry, but you still have to decide how much you can afford to spend on it, which restaurant you're going to, and what you're going to order. And you still have to wonder whether or not you're going to have a massive case of food-poisoning afterwards. Show me an actual menu -- then I'll tell you if I'm impressed."

Posted by: davidrupp on January 07, 2005 at 02:35 PM


I've been too busy actually developing and integrating services for clients to get involved in this discussion...hehe...

2009-01-05 Tuesday - Recommended Web Designer

A friend and former colleague, Jim Mercure, is looking for web design projects. Jim is also a highly accomplished professional photographer. Here's a link to his website.

I've worked with Jim professionally several times over the last 10 years - I highly recommend his services.

You will not often find a more friendly, professional, competent, skillful, creative web designer.

2009-01-03

2009-01-03 Saturday - CAEAP.org

I came across this web site recently, CAEAP.org, which is the Center for the Advancement of the Enterprise Architecture Profession:

Vision
To have a working environment where the Enterprise Architecture profession is widely recognized by likeminded individuals and the organizations they work for, and who all support the legitimacy of the profession and its practice.

Mission
To advocate consistent professional practice, to generate public awareness, and to bring together likeminded individuals who subscribe to the Hippocratic Oath for the Enterprise Architecture Profession.

Goals
1. To identify and establish a body of ethics, principles, and maturity measures which convey a consistent message about the Enterprise Architecture profession and its practice.

2. To develop and certify a body of knowledge that properly represents the Enterprise Architecture Profession and its practice.

3. To improve the practice of Enterprise Architecture such that its practitioners are widely recognized as professionals.

2009-01-01

2009-01-02 Friday - Recommended Java Training Resources

A question was asked on LinkedIn for recommended Java training resources (for someone coming from a C++ background). Here were my suggestions:

http://www.javaranch.com/

http://www.javapassion.com/

http://java.sun.com/javaee/5/docs/tutorial/doc/

http://java.dzone.com/

http://www.ibm.com/developerworks/java/

http://www.java.net/

http://www.sun.com/training/catalog/java/index.xml

http://forums.java.net/jive/index.jspa

http://developers.sun.com/learning/javaoneonline/

http://www.particle.kth.se/~lindsey/JavaCourse/Book/index.html

The two books I would highly recommend:

Bruce Eckel's Thinking in Java, 4th Edition




Agile Java Development with Spring, Hibernate and Eclipse by Anil Hemrajani




Additionally, it is worthwhile to spend some time reading the following books that are available on the Sun Developer Network (SDN):

The Java Language Specification

2009-01-01 Thursday - intltechventures.com updates

I've republished the Resource Links page with new content.

Updated the Computer Hardware section of my Amazon recommendations store.

2009-01-01 Thursday - New Year Goals


  1. Spend more time contributing to Open Source projects


  2. Publish more articles and white papers


  3. Donate my services to a selected non-profit


  4. Fund a selected entrepreneur through Kiva.org ("Kiva's mission is to connect people through lending for the sake of alleviating poverty")


  5. Complete the book I started in 2008 for Packt Publishing


  6. Attend QCON 2009 (in San Francisco?) [my 2nd]


  7. Read Dean Wampler's upcoming book on Scala


  8. Make a trip to Asia to scout out possible locations and engineers


  9. Add 100 new professional connections to my LinkedIn network - currently at 169


  10. Add a new conference to attend for my own professional development

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.