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?
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.
java.blogs is here.
Already pointed me towards the new release of AspectJ. About which more later...
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.
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.
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.
Spam, spam, spam, spam, spam, spam: how unwanted e-mails are taking over cyberspace
So it's not just me, then.
Project Genesis: Internal Corporate Correspondence
Via kryogenix.org.
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.
The Journal of Object Technology looks pretty interesting, if a little heavy at times.
There's a new version of ieSpell available. If you use IE, you want this.
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.
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.
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.
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. ;-)
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.
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.
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...
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...
See also: Java Specification Requests 14: Add Generic Types To The Java Programming Language and Prototype for JSR014: Adding Generics to the JavaTM Programming Language v. 1.3.
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.
Open source gloats over leaked Microsoft memo
See also: What We Can Learn.
Via Niel Eyde.
Eclipse 2.1 M2 - New and Noteworthy
Whoooo! New refactorings!
Via A cup of joe.
J2EE Performance looks OK to me, dodgy benchmarks not withstanding.
The Python programming language page at the Wikipedia is the best short description of Python that I've yet seen.
Via SumErgoCogito.
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.
They said it should work, and it does. So, can anyone tell me why a WebFacing user needs WAS?
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.
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.
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.
Is that your final answer? Guidelines for the effective use of the final keyword.
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.