sexta-feira, 13 de junho de 2008

Quaere

A different concept framework to add queries to your java programs:

Quaere is an open source, extensible framework that adds a querying syntax reminiscent of SQL to Java applications. Quaere allows you to filter, enumerate and create projections over a number of collections and other queryable resources using a common, expressive syntax.

Just for your information it is based on a LINQ to SQL: .NET Language-Integrated Query for Relational Data.

Fluent Interface design style

It is always good to get in contact you new design styles and keep our knowleadge up-to-dated.
So take a look at the FluentInterface, proposed by Martin Fowler, probably you will have already seen that.

quarta-feira, 11 de junho de 2008

Legacy system

The term Legacy system is widely used in almost any software engineering paper. It could be a lot of things, like a Mainframe, Old system in CLIPPER (do you remember that), C, Fortran, Win32, so on.
When we talk about SOA, MDA, Mule, connector architecture, etc there is always a reference to the advantage of connecting to the legacy.
Although many says about it few have a way to test it or even he is interested in testing it. But let's face, it is important to have an environment - mainly for architecture concept tests.
Among all these legacy systems the most complicated on is to have a Mainframe environment running, most of the time we just create a mock for it. But have you never desired to put some kind of system up and running? Or you have never been interested in know how the big-blue works?
Well if it is your desire as it is mine, take a look on the following link:
The Hercules is only the emulator, it is necessary to install the OS, Subsystem, Compilers, running system, RACF, VSAM, ISAM, etc. Looks complicated? Yes it is. But try to read this document for a brief introduction, please it is a old work from university
  • zOs (portuguese).
I am not a specialist, but I know more or less how it works, if you are interested I can give you some tips.

terça-feira, 10 de junho de 2008

Let's play?

There is many ways to learn how to developt using Java language, but I should admit that IBM offers three great ways and both are really challenging: gaming.
The idea behind is to create classes (using all the widgets from Java language) that will be used by a gaming program. The first one is to create a robot, that will fight agains other robots, the second one is to create a car to run in a rally and the third is to create peasants and knights, conquer the world and increase your medieval kingdom.
Besides the Java knowleadge that you get coding for these games you also increase your skills for artificial inteligence.
Let's play?

Lightweight development environment

Yesterday my deskptop crashed again (ok, it is not a unusual thing to happen), and now I am stuck with a old notebook (P233MMX with 64MB and Windows ME).
I know that I cannot expect something really amazing from it, but we do not have a lightweight development environment. In that notebook I cannot expect something more complex than a notepad.
It is obvious that I will not be able to use something complex like Eclipse IDE, but most of time we do not need something like that. How much time do you spend waiting for plugin loading, or any other nice stuff that you never use.
I tried some light source code editor, but nothing really amazing, what you normally get from then is a code highlight. In my opinion what we need in these kind of situation, and in almost all the other situations, is something simple that can integrate easially with external tools (that will make the dirt work when you need it).
Let's agree that features like code refactoring, code highlight, online error report, auto compilation, etc are nice and really usefull, but we get to much used to it. Beliave me that it is difficult to work in a simple source code editor, sometimes it is important to come back to something simpler and recicle our base knowledge.
Remember: without a good base we cannot make a building that reach the sky.
For me as a homework: try to find tools for a lightweight development environment (advogates of JEdit, VI, Emacs, etc can post comments about their advantages).

domingo, 8 de junho de 2008

Subjects

One of the most difficult part of writing to a blog is to find out what subject to write about.
I would like to invite you all to purpose something, ideas are always welcome. Fell free to put "almost" anything on the table.

Naked Object Architecture

Probably you have already listened about Naked Objects. But do you know what they are?
Basically it is a architecture and a framework proposed/created by Richard Pawson, as a Phd thesis. It is based, more or less, on two concepts: OOUI (object oriented user interface) and Domain Objects.
The main idea behind them is: you develop the domain object (also know as business objects) and the framework will handle the user interface automatically. Them the users will work directly with the domain objects.
As all architectures it has pros and agains. As pro we can say that it has a fast time development, as again we can say that all business logic should be at the domain objects. In fact there is more pros and agains (these are just the first ones that you can notice).
Although many of you can say that is just for mickey mouse software, I don't agree. Let's face that some software are basically changes on domain objects, for example, those famous C.R.U.D. application, where usually we handle legacy data in the same way.
Why should we care about spending time developing and complete application? But remember that we must know how far this application is goint to, it could become a nightmare to maintain.

It is just a brief introduction to naked objects, I am still reading the articles and the thesis. If you want more information about that you could refer to these links (at least I am using them to learn more about it):
I think that is not necessary to tell it, but I will say it anyway: naked objects are not java or java related. It is a architecture and a framework and as it is it could be implemented in any language and it could be combined with any other architecture, like client-server, web, etc.