Artima has part 1 of an interview with Tim about the future of NetBeans. Now, I am a NetBeans user. I like it. Really. I still find myself hating every time I hear people talk about NB. The spin is just unbelievable.
CARVIEW |
Artima has part 1 of an interview with Tim about the future of NetBeans. Now, I am a NetBeans user. I like it. Really. I still find myself hating every time I hear people talk about NB. The spin is just unbelievable.
First of all, I never use Jakarta Commons Logging (JCL) directly in my applications (Log4J is my tool of choice for logging tasks), but as you probably know many frameworks and libraries do all of their logging through JCL. In most cases you will want to catch some of these log messages, so that you can better monitor your application. For example, you will probably want to log all SQL queries that Hibernate issues, at least in the early development phase, so that you can have a better perspective of what is going on.
I usually don’t have a problem with JCL since it finds a Log4J implementation in the classpath, get my configuration and all works fine. Except when it doesn’t.
In this particulair case, I had a Spring-Hibernate based web application that I needed to deploy on the Tomcat 5 server. After deploying an application, commons logging couldn’t find a log4j implemantation and all logs were redirected to the standard Tomcat log file.
Today while reading on the net I came across this blog posting: Personality_Traits_of_the_Best_Software_Developers and I had to comment.
While I think all those traits mention are good and do tend to yield developers who have attention to detail, control their distractions, etc., it is my opinion they do not necessarily equal the “best” developers! They are however some of the kind you want, but not necessarily the only kind of developer you need!
I have worked with many developers over the years who’ve come up with and coded great solutions to very complex problems, but they were not all detail oriented people. They did have bugs, their code sometimes needed re-factoring, etc. but quite often their ideas and solutions tended to be better than others; more out of the box. That made them “great”. We had plenty of other developers; we’ll call them “BTA - better than average”; all exhibiting the traits you say are “best” but they did not and probably would not have come up with solutions like the “great” developers. For example, the “great” developers tended to be more widely read in software engineering than any other team member, thus contributing a pointer to a solution or algorithm that no one else knew about. The “great” developers contributed things that the traits you mention don’t and can’t account for!
Now before you write me off, lets consider other great people in history that changed things but whom had some issues like: personal lives in shambles or a least distressed in areas, personal appearance was less than ideal (putting it mildly), little savings or planning for the future, not being able get through life without other support systems to cover and deal with what they were not good at! It is generally reported that Thomas Edison, Einstein and Richard Greenblatt all had an issue with personal hygiene and clothing that was constantly disheveled. Einstein was turned down and actively undermined over and over again when trying to get a position teaching in a university, this, even though he had a teaching degree and shortly later was granted his PhD in Physics and along with having written Noble Prize worthy papers. Why? He was considered brash and not accepted into the establishment.
Great People with Issues
1) Einstein
2) Vincent van Gogh
3) Robert Oppenheimer
4) Richard Stallman
5) Pablo Picasso
6) Edward Teller
7) John Draper aka Captain Crunch
8) many a UNIX hacker
9) Nikola Tesla
10) Richard Greenblatt
11) von Neumann
12) Salvador Dali
13) Thomas Edison
Many of these people would be categorized today as ADD, ADHD or mildly mentally ill! But they each helped change the world!
So should we write off people or developers who are disorganized, socially awkward, don’t plan ahead, are sloppy in other parts of there lives, etc? I think if we do it’s our loss! And I think it’s great one at that!
Einstein, Thomas Edison, Von Newmann, Richard Greenblatt and other great UNIX hackers wouldn’t be considered great according to the criteria espoused, but yet they were! The effect of the contributions they’ve made is immeasurable. How would we account for that loss? Could we?
The thing to remember is that many people considered as “great” have let other areas of their lives go to pot whilst they put all they have into what they are doing! Excuse? No, just a fact!
I think the real question is “How do you recognize that greatness and help it along?” Do you do that by allowing those people to focus on the passion(s) they have by experimenting, making mistakes and repeating, and then come back to clean-up, re-factor, re-organize, etc. later? In our world of open-source development and discussions through blogs, forums, etc. we want to be careful not to flame the messenger or inventor. This includes in corporate development departments as well where managers and team leads have to weight these kinds of issues as well.
Most of all, you can’t judge a book by it’s cover! Sometimes you might even find that a person who delivers only 10% of the system might be your most crucial person, because it’s not the amount they deliver but what they deliver! And sometimes that isn’t code at all, but leadership, insulation from political ho-ha, brilliant ideas or maybe just a good pep-talk at the right times. Your “best” team member might be your least recognized… Think about that… and then find someone to view in a different way!
Interesting links:
New Hacker’s Dictionary
A Portrait of J. Random Hacker
Any Wikipedia article about the above mentioned people
Till next time..
Sam Griffith Jr
NetBeans Program Transformation tool Jackpot is a extendable refactoring/reengineering module developed based on Sun Laboratories research project where James Gosling involved. More than a traditional refactoring tool, its a platform library for easily finding and correcting patterns in Java source code using static analysis. From the project description:
Jackpot is a NetBeans IDE module for modeling, querying and transforming Java source files. Although the Jackpot engine can be used for bug detection or refactoring, the initial focus of this module is to add program transformation capabilities for NetBeans users.
Isn’t it same as Refactoring?
In Jackpot context, Program Transformation is a script or Java class which queries sources in Java projects for patterns and changes them. This sounds a lot like a refactoring, but from project description:
This story was bubbling around the j.n forums yesterday, and there has been some discussion about what the license for use with the FLOSS Java will be.
While the question of what does the GPL mean if you extends Object.class which may be GPL it seems there is another case to be made here:
What if the core java.* and javax.* classes became LGPL and the runtime became GPL? I think this is an interesting thing to discuss for several reasons:
First, the GPL for the core runtime would in some ways “protect” Sun’s investment in their JRE. Unlike less contagious licenses, it would guarantee that nobody takes the JRE, enhances it and packages it as a product outside of Sun’s domain. If Sun is committed to open source Java, then the re-rolling of external contributions into the runtime won’t affect them in the future. Additionally, the LGPL on the core library means that external optimizations and bug fixes will be available to merge back into the core.
I know the GPL is seen as a “political” license, but it seems to me the best way for Sun to ensure that they don’t see, say, Redmond, lift the JRE code and run with it in a radical new direction is to adopt a contagious license. LGPL of the rt.jar doesn’t affect the state of ISVs and developers who just write Java apps, any more than glibc does people who write Linux apps. The primary question here, however, is how many customers does Sun have that include the core runtime tightly bound into their products on a License from Sun for whom this would be a problem. My guess is there are likely one or two who might take issue with this approach.
Java 5 (also known as Java 1.5) was a fairly major release that makes using Java a lot quicker , easier and cleaner (click here for a full list of the new features, including Meta-Data , concurrency, Generic Types, Profiling , integrated JMX Admin facilities and XML support as part of the java core.).
The problem is that a lot of Application Servers still require the previous (1.4) Version. Even if you’re running on a Server (such as JBoss) that does fully support Java 5, the chances are upgrading an existing application will take a lot of time , mainly in testing effort to make sure nothing has broken. As Java matures, running on older versions will become more and more of an issue.
So, how do you get the benefit of the latest features , without losing the known stability of the previous version? One solution is Retroweaver which allows you to write in Java 5, and deploy in Java 1.4.
(Thanks to Joe Walker’s Blog (Him of DWR fame) for putting me on to this one). More in
Technology in Plain English
It seems like growing interest in dynamic languages will finally move Java syntax toward local functions and closures. Gilad Bracha, Neal Gafter, James Gosling and Peter von der Ahé have written a specification proposal (PDF) for adding closures and local functions to the Java programming language for the Dolphin release.
The specification looks very promising. Here are the two basic examples from the specification that shows how future features could look like:
Local functions
public static void main(String[] args) {
int plus2(int x) { return x+2; }
int(int) plus2b = plus2;
System.out.println(plus2b(2));
}
Closures
int(int) plus2b = (int x) {return x+2; };
As authors state, this specification is only to be used as a starter for the broader discussion, so I hope we’ll hear much more on this topic in the future.
I’m glad that proven dynamic concepts, such as closures, will finally get their place in Java. It’s a pitty that closures will not be available for developers for several more years, but better late than never.
Here are some more links for you to follow:
It’s finally here. According to news and blogs, Sun announced that it will open source Java ME platform and some components of the SE platform by the end of the year. Sun plans to open source javac compiler and HotSpot virtual machine, two crucial components of the Java SE platform, by the end of the year. The rest of the SE platform should be open sourced during the next year.
They will use some of the proven OSI licenses, but the particular license and governance model is yet to be settled. You can visit the official site for this project and make your contribution to these discussions in the forum.
Finally, here are some thoughts on open source Java from Geir Magnusson Jr. one of the founders of the Apache Harmony project.
eWeek is running an artcile based on interview with Graham Hamilton, a Sun vice president and fellow in the Sun platform team. In the interview he told that Java SE 7(code-named Dolphin) is going to support Visual Basic.
Sun is not trying to clone any specific version of Visual Basic. It is attempting to support common VB.Net features on the Java platform. “If you’re familiar with VB.Net, this will be a very easy-to-learn language for you,” Hamilton said of the Basic implementation Sun is working on.
So it sounds like Java is going to have the VB kind of features, not the language itself. At this point, I don’t think Sun is attempting the compiler which complies the VB code into byte codes. Anyway this is a good news for Java developers who migrated from VB and for the people like me who never worked with VB, its just another feature(s) . What’s your opinion?
Update : Sun is working on Project Semplice Basic which lets you write code using VB syntax(VB like syntax) and compiles to Java classes that will run on the Java. In other words these features are not going to be part of the Java language, rather its a new scripting language identical to VB. The compiler is in early stages of development, which compiles Semplice Basic code into Java classes. Its not meant for porting existing VB apps over to Java, but you can convert existing VB6 applications into Semplice Basic applications with some limitations by using Netbeans tools that Sun is currently working on.
This new VB type scripting language is inspired by VB, so it may attract the VB developers. But by this time I suspect most of the VB developers are attracted by C# as both can be used in mix in .Net framework. But the core advantage of the Semplice Basic is, once you compile the code into Java classes you get the benefit of “compile once, run everywhere”.
Chris has a minirant in the j.n Editor’s blog today:
But I did remember a while back when Google rolled out Google Maps as a Java ME application, Google Maps Mobile, and I got excited. “Hey! Useful Java ME application! I should go check this out!”
Well, after trying all morning, I can’t say I’ve gotten it to work. The page identified my Motorola V300 and the jar downloaded and installed (albeit with a warning about potentially limited functionality), but it can’t seem to load the terms and conditions, which might mean that it has no network access, which kind of makes the whole exercise pointless.
So, my whole enthusiasm about ME from two paragraphs ago? Back in the “good ideas gone wrong” drawer. Thanks for playing.
He is totally right here, but I think the fault lies not within ourselves, but within our carriers.
If you buy a V300 or RAZR or whatever from any major carrier, it comes crippled. They only want you to use ringtones, wallpaper and –god forbid– applications that they sell you. Lots of phones in the carrier specific versions are crippled beyond belief. I don’t think the fault is J2ME’s so much as the way we use cell phone networks.
I hate to bring the whole political aspect into this, but this is directly on point with the network neutrality debate and the Trusted Computing/Paladium issue: the hardware and the network should be there for what you want to use them for, not some highly managed, highly structured regime. One of the reasons I, personally, consider the NetNeutral intitiative important is I don’t want my Cable Modem service to end up looking like the cell phone networks.
That said, and to respond to the poll, Yes, I have used non-game apps — in fact, I almost never play J2ME games. But since I got my grubbies on the new Savaje phone from JavaOne, I am excited again. Once you have a phone that actually belongs to you, not that is on a “permanent license” from your carrier, the freedom it grants feels amazing.
We’ve just published Getting Started with Hibernate 3, by Jim Elliott. It’s the latest entry in our new series of Short Cuts: short PDFs that get you up and running quickly. Jim is a great author–he works fast, he’s easy to get along with, and he writes really well.
Getting Started with Hibernate 3 is similar to our earlier Hibernate: A Developer’s Notebook. There’s a good reason for that: Hibernate has changed a lot since the book was written, and we couldn’t see letting a good format go to waste. So the Shortcut essentially updates the Notebook. If you enjoyed the notebook, get the Shortcut to bring you up to date. If you’re just getting started, the Shortcut stands on its own.
Our Shortcuts are, in some ways, an experiment in next-generation publishing. We’ve actually been publishing in PDF form for a long time–but now we’re taking it seriously.
Congratulations, Jim, and thanks again for a great book!
I only have access to the Java blog system, but this message is sufficiently critical to bear mentioning on this channel. So, pardon the off topic post fellow Java programmers (but I know many of you dabble in Rails).
If you have a Rails application in the wild. You need to run gem update rails as soon as reasonably possible, and get yourself to 1.1.6, there is a security flaw that hasn’t been made public yet.
See this CNet article for more details.
This blog is about Mustang for the Mac, which is being developed for both PowerPC- and Intel-based Macs. That’s kind of interesting when you consider one thing:
As of yesterday, Apple doesn’t make PowerPC Macs anymore.
Port RJS to Java. Ugh. i dread this task. I really do. Recreating RJS templates in Java….Yuck. I dread this task because I made fun of the prospect of some Java programmer having to recreate RJS in Java a few weeks ago on this blog, but, I’ve created an application in Rails that must be ported to Java. Don’t ask why, just know that it must be ported to Java. This isn’t the first time, I’ve had to port something from Rails to Java.
So…..errr…..what does one do if your Rails “prototype” makes heavy use of some of the most advanced features of RJS templates and you have to migrate to Java? My first thought: ask the fine readership of this blog if they have found themselves in a similar situation, or, better yet, is anyone out there already doing this? C’mon, I can’t be the only one in this wide world who has been using RJS and wondered, “Why can’t I do this in my Java application?” ….The first step, Google “RJS in Java” - that search returned a few hits, but mostly links to Rails RJS pages and links to blogs bemoaning the fact that Java isn’t there yet.
The real lesson here is “Never prototype with a technology more capable than the target platform.” So, take this as a lesson, if you are using Rails as a prototyping language, don’t use RJS, you’ll end up wishing that your prototyping technology was your production technology. As I’ve said before, J2EE is a trusted, capable platform, and in some ways it is lightyears ahead of Ruby, but, as far as web applications go Rails does laps around Java. So, maybe porting RJS to Java might help level the playing field? Maybe? Who knows, all I know is that I’m not the only only who thinks that Java is not Web 2.0.
Read on for the options…
In light of some criticism and even attacks (justified or not) that are out there, here are the ten most common misconceptions about Spring from SpringFramework.org.
First of all, SOAP is not my web service protocol of choice since I think it is overkill for the most of applications. I prefer the simplest possible solution for the problem, but when the service that you need is only available through SOAP, you don’t have much choice.
The fact is that .NET developers like SOAP and use it as a de-facto the only way to expose their services. Simplicity to do so is certainly one of the most important factors in this decision. While there is nothing generally wrong with this, the simplicity hides some traps for those that don’t take care. One such trap is making methods return (or accept parameters) of general types such as ADO.NET DataSet (something like JDBC ResultSet in Java).
Contact Us | Advertise with Us | Privacy Policy | Press Center | Jobs
Weblog authors are solely responsible for the content and accuracy of their weblogs, including opinions they express,
and O’Reilly Media, Inc., disclaims any and all liability for that content, its accuracy, and opinions it may contain.
This work is licensed under a Creative Commons License.
For problems or assistance with this site, email help@oreillynet.com | (707) 827-7000 / (800) 998-9938