Get the book!
The best Java IDE

JMatter Blog

New release out (June 27 2008)

Posted by Eitan Suez Fri, 27 Jun 2008 18:50:00 GMT

Just posted a new release. See downloads. Enjoy!

/ eitan

no comments

2008-02-11: Patch release is out

Posted by Eitan Suez Mon, 11 Feb 2008 18:47:00 GMT

A patch release of JMatter is out today, which fixes these minor issues discovered after last week's release:

  1. a rendering issue with the login panel
  2. issue with persisting BigDecimalEO's
  3. a bug in minimizing a maximized internal frame (reported by alexcrown (thx))
  4. a classloader issue that manifested itself with a webstart-deployed app

Thanks, / Eitan

2 comments

A belated congratulations to NakedObjects on v3.0!

Posted by Eitan Suez Wed, 06 Feb 2008 21:18:00 GMT

This past October, the Naked Objects group announced version 3.0 of their framework. I know that this version was in the works for some time. Like previous versions, this one keeps pushing the envelope, now offering an HTML-based interface to a nakedobjects system, among several other big features.

The Fall of 2007 was a busy time for me. When the news came out, I did not have or take the time to acknowledge this milestone and participate in the discussions.

I would like to acknowledge this achievement and albeit belatedly, congratulate Richard Pawson, Robert Matthews, and all involved in making this release a reality: congrats!

no comments

Back on track..

Posted by Eitan Suez Tue, 05 Feb 2008 16:19:00 GMT

The JMatter project was fairly dormant during the Fall of 2007. But no longer.

Let's begin with a formal announcement of a new release of JMatter (4 Feb 08). The release notes detail some of the new features.

Let us know what you think.

Watch for new developments in 2008.

Tags  | no comments

CSS 4 Swing Now Open Source

Posted by Eitan Suez Mon, 16 Apr 2007 17:19:00 GMT

The CSS implementation in the JMatter subversion (see 'css support coming for jmatter') is not in any way dependent on the JMatter codebase.

In fact it's a standalone implementation that can be used in any Swing application.

I would like to announce today that css4swing is officially open-sourced (GPL). Here's the subversion URL:

http://svn.jmatter.org/css4swing

Enjoy!

/ eitan

no comments

CSS Support coming for JMatter

Posted by Eitan Suez Thu, 05 Apr 2007 20:33:00 GMT

I believe I have on my hands a decent implementation of a subset of the CSS standard for Swing, and I've started integrating it into JMatter.

The integration is checked in to the JMatter subversion trunk.

In fact, I just finished documenting the feature. You'll find a new chapter (14) both in the online browsable html version of the documentation and the online version of the PDF (see here).

I plan to cut a new release of JMatter over the coming days. If you happen to be working against svn trunk, please play around with this if you have a chance and send me feedback.

I'm personally quite excited about this. I believe that CSS significantly simplifies styling and tweaking a swing UI, without having to touch the code. Also, it reuses knowledge that we already have.

Again, all the details are in the documentation, and please don't hesitate to post your questions to the mailing list.

Thanks, / eitan

2 comments

Andres Blogs on JMatter @ DM

Posted by Eitan Suez Thu, 22 Mar 2007 20:18:04 GMT

Check out this blog by Andres Almiray regarding the Desktop Matters conferences, and specifically JMatter (!).

no comments

Post-DM Thoughts

Posted by Eitan Suez Wed, 21 Mar 2007 20:52:00 GMT

It's been over a week since the Desktop Matters conference where I presented on JMatter. Although I did blog about general impressions of the conference on my java.net weblog, I'm not sure why I haven't really started collecting my thoughts of the conference as they apply to JMatter.

So here is a first post. Hopefully this will not be the last on this topic.

The Desktop Matters conference lasted approximately 1.5 days. It started on a Thursday afternoon and ended late on Friday. Throughout this time, we listened to various speakers talk about some aspect of Desktop development.

One particular session, given by Ben Galbraith, made some interesting points:

  1. It tried to summarize current pain points with Java Swing
  2. It tried to express visually the need for a framework for building applications with Swing

This was the list of pain points:

  • GUI Creation and Maintenance
  • Concurrency
  • Binding and Validation
  • Various API Problems

What I find interesting is trying to gauge JMatter against each of these points. Does JMatter help mitigate these problems?

JMatter completely does away with the first: "GUI Creation and Maintenance." With JMatter it's not even a question of how easy is it to create and maintain your GUI. GUI Creation and maintenance disappears.

The second pain point speaks to the fact that developers have to be very careful to perform UI-related operations on the event dispatch thread, and conversely to ensure that non-ui operations (particularly long-running ones) are performed off that thread. Again, in this respect, JMatter completely removes this burden from the plate of the application developer. Methods are exposed as actions using a simple convention. The framework ensures that the action is invoked off the edt and that the view for the object that the method returns is constructed back on the edt.

The third point is likewise addressed by the framework. Your model objects automatically bind to the framework's views. You don't even need to learn or concern yourself with an API for data binding. JMatter works at a higher level. Much of the burden of validation is lifted and custom validation can be added by overriding the validate() method.

The last point wasn't too clear to me. I assume it spoke to the fact that the Swing API in general is very large, very complex, and not very consistent in many respects. It may not apply at all to JMatter since you typically rarely even interface with Swing. You might for the purpose of creating and plugging in custom views for types. This task is by its very nature somewhat challenging, but nothing that an experienced Swing developer cannot tackle.

Let's discuss the second issue: Swing is by no means a framework for building business applications. It is nothing more than a toolkit for building user interfaces. No one is certain why in the web world we have dozens of higher level frameworks to choose from and yet in the Swing world, folks have only recently begun considering the development of such frameworks.

I propose that JMatter fills this void. JMatter addresses comprehensively the task of building business solutions. Furthermore, it does so at a much higher level than most other APIs.

I recall a claim that used to be made a long time ago about the difference between a mac (i'm talking about v6 or v7) and a pc (back in the days of windows 3.1). Whether justified or not, the claim pointed out that with a mac, users typically were able to focus on the task at hand. While with a pc (at least in those days) one fiddled a lot with dos, autoexec.bat and config.sys and for the most part one remained distracted from the job they had to accomplish.

This is a major lesson about usability. Folks such as Jef Raskin wrote about the locus of attention.

I believe that JMatter frees developers in an analogous manner. We're not talking about UIs here. I'm basically saying that this framework lets developers focus on the business domain and keeps the plumbing out of their way. An apt analogy?

no comments

Paging

Posted by Eitan Suez Wed, 07 Mar 2007 23:10:00 GMT

We've all had to implement this feature as developers. Today, many frameworks such as Tapestry for example, will provide components out of the box that will automatically take care of paging a listing on your behalf.

JMatter also provides paging out of the box. When I sat down and started to think about this feature, I saw a certain pattern. One's first, naive implementation of paging might consist of a simple forward and back navigation buttons:

  <   >

Shortly afterwards comes the request for the ability to navigate to the first and last page in a listing, and so they are added:

  <<   <      >   >>

Then embellished, like so:

  <<   <   [Page 3]   >   >>

Over time, paging has evolved to let you navigate to a number of pages in the vicinity of the current page:

  1 2 ..  7  [Page 8] 9 .. 13 14

This is what most web-based applications do today.

What I realized is that paging, taken to its eventual limit, is essentially embodied in the behaviour of a scrollbar. Most scrollbars provide continous scrolling. Whereas in the case of paging, the scrolling is more discrete. The more pages there are, the less this discrete behaviour is apparent. What's nice about today's scrollbars is that their size is inversely proportional to the length of the list. The larger the list, the smaller they are. Scrollbars have the advantage of giving you more of a visual perspective of where you are in the list. And you can simply drag the scrollbutton to any location along its dimension.

JMatter's Swing-based view mechanism defines a view implementation: a component named PageScrollBar which extends Swing's JScrollBar, shown at the bottom of the following listing:

Paging Desktop Matters Sessions

As usual, developers of JMatter applications need not concern themselves with this at all. It's bundled into the framework and it just works. If however you feel the need to customize the way this scrollbar looks or behaves, it's easy enough with a little Swing experience to make the desired revisions.

no comments

Taking a little time to reflect

Posted by Eitan Suez Wed, 07 Mar 2007 18:35:00 GMT

I have been working at implementing the codebase that I call a framework that I named jmatter for quite some time. Looking back, I realize that I have on very few occasions actually expressed (or attempted to express) what I have constructed. Most of the time, you may say that I was not completely conscious of it.

UI

Part of JMatter is a user interface for business applications that I wrote in Java Swing. With respect to the UI, the fundamental design boils down to:

  • essentially designing an ooui, a ui that mirrors the underlying business object model
  • mvc: views are listeners on model objects and as the model objects change, the views reflect the change

Persistence

Another aspect of JMatter deals with persistence. I wanted transparent persistence. Most of the work is delegated to Hibernate. Some of the conveniences I developed included the automatic construction of mapping files from the objects. This effort has in a sense been nullified by the fact that JPA does this too, and perhaps they do it better because a combination of reflection and interpreting of annotations is translated to the underlying metamodel that Hibernate uses at runtime. The xml mapping files are but a marshalled version of this information.

Core

On to the heart of JMatter. I realize now that I have never really written down what this heart is. In a sense it's a metaobject protocol for Java. JMatter contains a number of classes that model types (ComplexType), instances (EObject), fields (Field), and methods (Command / EOCommand). Java of course has a reflective API. But by writing my own, one that lives on top of the language, I was now in a position to, in a sense, define my own language. If I wanted to give commands special features, I could write them in. Take for example the notion in JMatter that a command can be designated as "sensitive." Another, that a field can be marked "Required" which has implications in terms of the behaviour of CRUD operations. Another is the fact that these types themselves are all EObjects which means they can be persisted and manipulated directly from the UI. Though at the time of writing, they cannot be created (yet).

I ended up defining all kinds of rules and conventions for constructing business applications. And this system can in time adapt to all kinds of situations. Now that JMatter is open source, it has a diverse and growing community, with diverse needs. JMatter has changed over the last few months to address not only bugs, but desires for this system to meet these users' needs.

We still have many items on the drawing board, much of it has to do with providing implementations for cross-cutting concerns that are not yet addressed. Implementing reporting: defining, saving, editing, and running reports that produce PDFs for example, all directly from the UI. Finishing Authorization. I'm proud of the fact that the basic design I have is very simple and clean. But this work is not yet complete. Scheduling features could use a number of improvements. Still, much is already in place, and the user interfaces of JMatter applications, both in terms of their richness and simplicity, is something that I am proud of.

Many things go into making a project or a product successful. Trusting the community. Managing the project with responsibility. Communicating with the community. Integrating patches. Providing good documentation. Perseverence and keeping the momentum going. Today we have more tools at our disposal than ever to keep the momentum going, from blogs to mailing lists, subversion repositories, great tools for producing documentation, content management systems and much more.

no comments

Older posts: 1 2 3 4

Powered