November 28, 2002
Moving Java forward

James has more thoughts on Extending the Java language.

If all of these proposals, I think that foreach is the killer. Of course, anything which moves Java closer to Python gets my vote.

Hell, let's just use Python. ;-)

The Java Three Wiki is fascinating, too. I'm not sure that I want to see closures, I must say. It seems to me that classes and generators do all that is needed here. Or am I missing something?

Posted to Java by Simon Brunning at 01:09 PM
November 27, 2002
AspectJ Now Supports Bytecode Weaving

Found in ::Manageability:: - AspectJ Now Supports Bytecode Weaving

This means that you will be able to weave aspects into existing code to which you do not have the source. Groovy!

For more about AspectJ, see the AspectJ web site, this developerWorks article, and these JavaWorld articles.

Posted to Java by Simon Brunning at 05:01 PM
java.blogs

java.blogs is here.

Already pointed me towards the new release of AspectJ. About which more later...

Posted to Java by Simon Brunning at 04:52 PM
Hi-tech Hell

Hi-tech workplace no better than factories

They face the lonely insecurity of the individual entrepreneur in a marketplace and culture that stresses, with macho imagery from war and sports, that they are ultimately alone. For many this may be the shape of work in the 21st century.

Sigh.

Posted to Software development by Simon Brunning at 04:39 PM
November 26, 2002
J2EE vs. NET, Java vs. C#

Yet another J2EE vs. NET, Java vs. C# article. Worth a read though, this guy really knows what he's talking about.

It's also significant to note that several new C# features have already been proposed and will be implemented soon, making C# one of the freshest and quickly evolving languages on the market. The Java language, on the other hand, had a strong initial start and then essentially stagnated after Java 1.1.

I couldn't agree more - Java needs to move if it isn't to be left behind. In terms of features, James Strachan's J* proposal would be a good place to start, I think. In terms of the process, I think that Sun should free Java.

I make use of the JGL library (written by Graham Glass, author of the article) for sorting and filtering. Excellent stuff. I notice that version 4.0 is out, but that you have to pay for it. We are using 3.1.0, which was free (as in beer).

Update: Oh yes - 10 more things to go into Java 3.

Posted to Java by Simon Brunning at 01:08 PM
Java Access to AS/400 Data

Java Access to AS/400 Data

We are sticking to JDBC at the moment on my projects. Since the prospect of our running the database on anything other than a '400 is just about zero for the foreseeable future ('cos we are interfacing with a rather old, but very capable and very large system), perhaps record level access shouldn't be ruled out?

Program Call Markup Language (PCML) is worth bearing in mind for some things, too.

Posted to iSeries by Simon Brunning at 11:45 AM
Spam, spam, spam, spam, spam, spam

Spam, spam, spam, spam, spam, spam: how unwanted e-mails are taking over cyberspace

So it's not just me, then.

Posted to The Internet by Simon Brunning at 10:28 AM
November 18, 2002
Project Genesis

Project Genesis: Internal Corporate Correspondence

Via kryogenix.org.

Posted to Funny by Simon Brunning at 04:11 PM
Using SQL's scalar functions from RPG

SQL to the Rescue! shows how to use SQL's scalar functions from RPG. SQL has a rich set of functions, so this could be very handy. (See also SQL's One-Row, One-Column Table for a follow up.)

Also for RPG developers - Data Structure Parameters in RPG Prototypes.

Posted to iSeries by Simon Brunning at 01:48 PM
The Journal of Object Technology

The Journal of Object Technology looks pretty interesting, if a little heavy at times.

Posted to Software development by Simon Brunning at 01:12 PM
ieSpell

There's a new version of ieSpell available. If you use IE, you want this.

Posted to Software by Simon Brunning at 01:09 PM
November 15, 2002
Out-of-the-Box

Out-of-the-Box™ is a distribution of over 50 (and counting) Open Source projects targeted mainly at Java developers

There is a lot of stuff out there - even if you don't get Out-of-the-Box itself, the Out-of-the-Box contents page gives you a good overview of what's out there.

Via dsuspense.

Posted to Java by Simon Brunning at 01:36 PM
Calling all firefighters

Calling all firefighters: return to join the rest of us on Planet Earth

What really pisses me off is that the bloody Tube drivers are on strike, too. Bastards. Getting to and from work has been a nightmare over the last couple of days.

Posted to The Big Room by Simon Brunning at 01:16 PM
November 12, 2002
J*

James Strachan is putting together a wish-list for a fictional Java pre-processor.

Generics & properties would be cool. Foreach would be just like Python's for, and everyone who is anyone knows how cool that is.

Better to roll these changes into Java proper than to use a preprocessor, though. How does one propose changes to Java? JSRs, I think.

Posted to Java by Simon Brunning at 04:57 PM
The Law of Leaky Abstractions

The Law of Leaky Abstractions is dragging us down.

Yup, Joel, there is a lot more to know these days. But some of us like that. ;-)

Posted to Software development by Simon Brunning at 01:47 PM
The principle of least privilege

A very interesting post, nay, essay from the martellibot on The principle of least privilege vs. public by default, taking in the Waterfall methodology, Eastern European politics and Wittgenstein en-route.

It's in the Python newsgroup, but it's applicable to any development environment, and the code samples are in multiple languages.

The only Python thing that you need to know is that object members prefixed with a single underscore (_likeThis) are 'private by convention'. That is to say - there is nothing to stop you accessing or modifying these members, but the onus is on you to know what you are doing.

Members prefixed with a double underscore (__likeThis) really are private. You cannot access or modify these members through the normal mechanisms. (There are still ways of getting at them, but you really better know what you are doing.)

Alex argues that 'private by convention' is A Good Thing.

Posted to Software development by Simon Brunning at 12:52 PM
November 11, 2002
The Tech Gap

Tech Futures - Where workers and investors will find opportunities in the years ahead

A reason for optimism? Let's hope so! I'm damned glad to have a job at the moment - the job market is atrocious.

Via Techdirt.

Posted to Business by Simon Brunning at 12:22 PM
November 08, 2002
Persistence

The deeper I look into persistence, the more confused I get.

In the old days, it wasn't too hard. We wrote our SQL, muttered a swift prayer to Codd, and away we went. In the even older days, we used native access methods, but there was still an RDBMS underneath.

In fact, the first systems that I worked on used flatfile, tapes, and DB1, all under PL/I. But my memories of that time are lost in the mists of Guinness.

But now, it's all very different. It isn't just data that we want to persist, it's objects. And from what I can tell, there isn't a generally accepted right solution to this.

One approach is to map objects onto tables in an RDBMS. Castor JDO can do this, as do Entity EJBs. In fact, there are many such frameworks. The advantages of this are obvious, especially to those of us who are comfortable with SQL. (My friend Steve used to whistle The Ride Of The Valkyrie when I was doing SQL updates.)

But it isn't very OO, is it? Not very twenty-first century.

Then there are OODBMSs. Java has Ozone, about which I know nothing, and Python has ZODB, which I've used, and is pretty funky.

Somehow, though, I can't see OODBMS replacing RDBMSs. Perhaps it's just that I've not got used to them. But when I first learned about RDBMSs, a light went off in my head - I knew that they were just right. I get no such flash of light from OODBMSs. But then, what do I know?

I suppose that there is always pickle. For Python, at least...

Update 11th November: A couple of approaches I neglected to mention. You can persist to XML. Castor does this, in addition to being able to persist to an RDBMS.

Then there is the Prevayler/PyPerSyst approach - keep everything in memory. Which is OK for small data sets, I suppose...

Posted to Software development by Simon Brunning at 01:44 PM
Struts 1.1

Learning the New Jakarta Struts 1.1

Cripes, I had better get a move on! My knowledge of Struts is almost entirely theoretical (a few prototypes aside), and they are upgrading it already!

Programming Jakarta Struts is on order...

Posted to Java by Simon Brunning at 01:12 PM
Civilization III: Play the World

CIV III TAKES ON THE WORLD

I'm off-line at home at the moment. I guess I'd better stay that way, or else I'll never get any work done. Sudden Strike is already doing enough damage.

Posted to Toys and games by Simon Brunning at 12:59 PM
Microsoft's FUD isn't working

Open source gloats over leaked Microsoft memo

See also: What We Can Learn.

Via Niel Eyde.

Posted to Open source by Simon Brunning at 12:50 PM
November 07, 2002
Eclipse 2.1

Eclipse 2.1 M2 - New and Noteworthy

Whoooo! New refactorings!

Via A cup of joe.

Posted to Java by Simon Brunning at 02:01 PM
November 04, 2002
J2EE Performance

J2EE Performance looks OK to me, dodgy benchmarks not withstanding.

Posted to Java by Simon Brunning at 02:08 PM
What is Python?

The Python programming language page at the Wikipedia is the best short description of Python that I've yet seen.

Via SumErgoCogito.

Posted to Python by Simon Brunning at 01:26 PM
Spam, Spam, Spam, Spam, Spam, Spam, Spam.

Java's Casts of Thousands

More than any other programming language Java forces programmers to embed hard-coded knowledge throughout their code about the types of data items. The numerous explicit cast operations in a typical program, not only annoy the programmer but also contribute greatly to the unreasonably high cost of maintaining Java software.

Posted to Java by Simon Brunning at 01:12 PM
WebFacing into Tomcat does go!

They said it should work, and it does. So, can anyone tell me why a WebFacing user needs WAS?

Posted to iSeries by Simon Brunning at 01:03 PM
Repetitive automation

The Cranky User: Could you repeat that?

One of the tools that we use is almost totally non-automatable. Not only does in not have any built-in automation features, but it doesn't seem to play by the rule in terms of its GUI, so AutoIt and the like can't drive it. Our weekly integration build takes all day, and is largely a manual process. Boring and error prone, too, and any repetitive manual process is bound to be.

Via vsbabu.org.

Posted to Software development by Simon Brunning at 12:45 PM
November 01, 2002
Sun thinks that J2EE is the way to go

Shocking, I know, but there you are. The Top Five Reasons to Choose J2EE as Your Application Server Platform.

The reasons are:

1. Integration
2. Compatibility
3. The J2EE Programming Model
4. Web Services Support
5. Open Standards: Safety and Freedom

Via TheServerSide.com.

Posted to Java by Simon Brunning at 01:43 PM
File renaming - Java vs. Python.

See the Python (imperative) version, and the Java version.

Now, this is totally unfair to Java - this is exactly the sort of job that you shouldn't use it for. What it does demonstrate is the importance if picking the right tool for the job.

As to the functional version of the Python script, well, it looks ghastly to me. But that's probably more to do with the fact that I'm not used to fuctional programming than anything else - I'm sure that Alex's code is fine, and that a functional style is appropriate to the task. But if you haven't grokked functional programming yet, it just looks wrong.

Posted to Python by Simon Brunning at 01:14 PM
Using the 'final' keyword

Is that your final answer? Guidelines for the effective use of the final keyword.

Posted to Java by Simon Brunning at 01:06 PM
O'Reilly Struts article

Jakarta Struts: Seven Lessons from the Trenches

Programming Jakarta Struts is going to be a must. ;-)

See also JSPs, the MVC model, and Struts.

Also, a series of articles on the JSP Standard Tag Library - parts one, two and three.

Posted to Java by Simon Brunning at 09:31 AM