Does an Open Java Really Matter?
snydeq writes "Fatal Exception's Neil McAllister questions the relevance of the recent opening of Java given the wealth of options open source developers enjoy today. Sure, as the first full-blooded Java implementation available under a 100 percent Free Software license, RedHat's IcedTea pushes aside open source objections to developing in Java. Yet, McAllister asks, if Java really were released today, brand-new, would it be a tool you'd choose? 'The problem, as I see it, is twofold,' he writes. 'First, as the Java platform has matured, it has become incredibly complex. Today it's possible to do anything with Java, but no one developer can do everything — there simply aren't enough hours in the day to learn it all. Second, and most important, even as Java has stretched outward to embrace more concepts and technologies — adding APIs and language features as it goes — newer, more lightweight tools have appeared that do most of what Java aims to do. And they often do it better.'" Since Java itself never mattered except to sell books, I still don't see why opening it matters.
Some would say the same about Slashdot.
"Since Java itself never mattered except to sell books, I still don't see why opening it matters."
What an ignorant and irresponsible editorial comment. Care to substantiate that claim, or even clarify what it means for a language to "matter?"
I find it funny that we have statements like "Java never mattered except to sell books", while I distinctly remember hordes of posters on this very site only a few years ago, rabidly arguing that Java is the best thing ever and that nobody will be using anything but Java in the future. Now, we have hordes of Ruby, Python, and what-not advocates saying the same things. I guess it's their turn. I'll just keep my C++, thank you very much, which nobody advocates these days, and everyone says is obsolete, too complicated, and inherently broken. Go ahead, mod me as flamebait! I'm used to it.
Since Java itself never mattered except to sell books, I still don't see why opening it matters. For a system that does not matter except to sell books, it sure has a large install base.
Maybe you're an older coder but I think that Java gets some of the nostalgia effect that BASIC use to since it seems to be the first programming course offered. At least from what I've seen it's one of the early languages taught now-a-days. But I really don't know for sure.
It certainly seems to be a fairly easy introduction to OOP.
Dedicated Cthulhu Cultist since 4523 BC.
I guess OpenOffice.org doesn't matter either then...
-1 Uncomfortable Truth
if Java really were released today, brand-new, would it be a tool you'd choose
If Windows were released today, brand-new, would it be a tool you'd choose?
Who cares. It's not today that it's released, and the importance of availability, mind-share and already developed applications around it, gives it a clear importance, even if you have better hammers for your particular nail.
Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
Not to mention that Java will probably be the COBOL of our generation. Isn't it a good thing that we'll be able to configure it?
We may not be able to kill the legacy code, but we'll at least have a better chance of killing the legacy platform!
Sun is loosing ground to .NET, so they have to regain developer. I have to admit that Open Java is very appealing to me, since I feel that the language/platform does have something unique to offer that is not available anywhere else.
Furthermore, I don't care what anyone says about .NET/Mono. It is a closed Microsoft technology that Mono will perpetually play catch-up to. It cannot replace what (Open) Java has to offer.
Goodbye Slashdot. You've changed.
Like it or not, Java is the no.1 language, at least claimed by an article referenced here: http://ask.slashdot.org/article.pl?sid=08/05/29/163253 The last line of the article pretty much gives an indication of the quality of the authors knowledge.
The real differences between an open java and the free java implementations maintained by companies like Sun and IBM are religious in nature. That is, they only matter to zealots obsessed with their own narrow interpretations. Most of us are moderates who only want to write great software. The different is moot to us moderates.
So, depending on who you talk to...
(C | C++ | Java) is the ultimate programming language.
Now we're being told that compiled languages are passe' and all you need is
(Perl | Python | AJAX).
In the meantime, the -art- and -science- of programming language design seems to have withered away due to lack of interest from the developer community.
From what I've seen over the last 30 years:
1. Programing Languages -DO- make a difference in both individual productivity and organizational effectiveness. And the latter is -much more important- than the former for anything bigger than a breadbox.
2. Management doesn't believe #1. In fact, management doesn't believe in software engineering. Instead, management wants to throw bodies at problems to make impossible schedules, with little concern for quality of the product. At best, managers throw process (and SEI CMM/CMM-I) at the hoards of programmers, believing that process is a substitute for
(a) developer talent
(b) product quality
So I guess ( 1 & 2) together explain the demise of programming language design. And all we can pray for is increases in second-order tools such as debuggers and, if we're really good, tools like static analyzers, to make up for the sh*tty set of current (popular) programming languages. And as end users, bugs and security holes will continue to be chronic results...
dave
I have written a few applications in Java.
I actually like it. If you want to write a database driven application that is also multi threaded I think it is just great.
If you need to be multi-platform it is the best solution that I have found. QT is close also.
The speed argument is old and should be tossed. Swing isn't slow or nasty anymore and is pretty speedy. SWT is also pretty nice.
Try Jedit, Netbeans, or Eclipse to see what a nice java application can feel like.
If you haven't used the latest version of Java I suggest you try it.
I have even found good uses for java appletts. Yes I know they got a bad name because way to many idiots "Microsoft I am looking right at you" used them for stupid things like hover buttons.
Java is a a good free as in beer and free now free as in GPL RAD system.
As far as it not mattering? Well a lot of people make a living writing Java. I just saw a Story on slashdot about a guy running java on a Cluster to do modeling.
As far as Java being to big for anybody to use it for anything practical...
Well JEdit, Netbeans, Eclipse, OpenOffice, and thousands of cell phone programs all say BALONEY.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Javascript has a better object model?
You mean, a language without a basic stuff like namespaces (!!) has a better object model than Java?
Oh, and Java also has static typing. That's a great feature.
First, as the Java platform has matured, it has become incredibly complex. Today it's possible to do anything with Java, but no one developer can do everything
What developer has to do everything? We use Java to run our systems without using all the complex frameworks that you seem to be referring to. It does the job. Just because people have developed over-engineered frameworks with a language doesn't detract from the the value of that language.
There are 0x40000000 types of people: those who understand 32-bit IEEE 754 floating point, and those who don't.
Yes, obviously, because everyone I know, including myself, has only ever had dev jobs using Java.
Er, not.
That's just stupid. Likely you've been working with Java in your experience, but I know tons of people that have never touched it at their place of work, including myself.
Further, at this point, it doesn't matter that I don't 'know' Java. I do 'know' half a dozen languages and if I should ever come across a job that I can't get _because_ I don't 'know' Java, then I've simply vetted a company that I know I do not want to work for.
Languages are tools, and once you know how to use a number of tools it becomes much easier to pick up new tools.
No Comment.
"Since Java itself never mattered except to sell books..."
Wow...that has to be one of the most idiotic statements I've ever read from one of you guys.
I'm no Java evangelist, but saying Java itself never mattered is like saying C (or even C++) never mattered - it just smacks of total ignorance.
Java has had a HUGE impact on software development, especially in the enterprise. I won't say it's all been great...but it's certainly made a difference in a lot of areas.
If the language really never matter, there would not be such a large community of developers using Java, and Microsoft would not have bothered to change their entire development platform to be so much like it (i.e. C#/CLR/.NET).
I'd thought you Slashdot guys were smarter than this. I guess I was wrong.
> Since Java itself never mattered except to sell books, I still don't see why opening it matters. This is exactly what smileys are for! Anyways, I don't know what's up with all the Java hate seeing how most OSS uses it. Ruby doesn't have unicode support for christ sake! Flame that if you really need to ...
___
No power in the 'verse can stop me
...(the words slow and bloated come up often) and most apps written in Java I have used have felt half-hearted.Actually, I would guess that most apps written in Java that you've used have been quite responsive, but you weren't aware that you were using a Java app. This is because most Java apps that people use are server-side apps (eBay springs immediately to mind).
"You cannot simultaneously prevent and prepare for war." -- Albert Einstein
I am far more fearful of an open fragmented Java than I was of closed Java.
The fact that Java had a "Sugar Daddy" to regulate it and support it with strong standard libraries made it very appealing to Corp and Gov users. I don't mind an experimental open source implementation but there has to be a stable, commercially viable alternative around that companies can depend on (read hold liable) or the whole platform slowly losses its appeal.
The "Java never mattered" thing is flamebait . We all know that it is part of the backbone of many commercial web solutions. There are also many projects that just couldn't have existed with it. The argument of validity is pretty much over.
I primarily use C/C++ professionally but I have used Java in the past as well as C# and a few Scripting languages (Perl,Python). I can say that for certain software solutions there is no better alternative to Java. I can say the same for C++,C# and Perl.
Javascript's object model is simpler, more flexible, and more consistant than Java's object model. Whether it's better depends on your point of view, but it has some advantages.
Static typing is nice when done properly, but Java doesn't do it properly. It manages to be both inflexible and restrictive, and prevents only relatively uncommon errors. I can't think of a single statically-typed language that has a worse type system than Java.
I think I know what you're doing - purposely trolling in order to incite a flamewar, driving up hits and thus ad impressions.
It won't work though; surely the vast majority of your readership browses with Firefox and some sort of adblocking system.
I mean it can't be that you genuinely believe that arguably the most often-used language for enterprise and commercial web development work "doesn't matter"; a 30 second search on any popular job website would dissuade you of that infantile notion.
It's official. Most of you are morons.
I use Debian. And with Java to be able to go into main it makes for even less hassle with Debian. Even if you don't use Java there are many programs written for it.
I made a hell of a lot more coding Java than writing books about it.
Slow news day, huh? What's next, what Lawrence Lessig had for lunch, followed by moral outrage over being charged cash money for a product or service?
Technical point: if you really want insight, you're not a troll.
Hard to give you an insight, since you're obviously not a programmer: your criticism of Java is based on bad experience using Java programs, not creating them. It would be like explaining the fine points of carpentry to somebody who's never picked up a saw or hammer.
That said, most GUI Java programs are pretty awful, and those are the programs somebody like you is going to base your judgment on. It's a lot harder than it should be to write a good GUI application in Java. Too many fundamental mistakes in the GUI libraries early on, and too many weird kludges created to fix them and still maintain backward compatibility.
But Java works much better on in other kinds of applications, and you've probably used such without realizing it. If you own a Blu Ray player, than you've used Java software. It's embedded in a lot of other devices. It's also moderately successful as a sever-side application, especially on the web. Ever browsed a web page that ended in ".jsp"? The page was generated by Java software.
So why is it "better"? It's not, really. No successful programming language is. They all have their strengths and weaknesses, and the argument really isn't between the languages, it's between the programmers who favor them. Java is popular with programmers who don't want to do their own memory management and who thank that deliberately restricting the idioms you can use makes for cleaner, more maintainable code. C++ is popular with exactly the opposite kind of programmer, who values both the ability to manage low-level details, and to use and create complex, often arcane idioms.
Small example: in C++, you can define what operators like "+" mean with any kind of object; Java also has the power to define what you can do with an object, but deliberate omits the ability to express complex actions with simple operators.
I program in Java because both for it's platform independence and for the fact that if you sign a Java applet and embed it in a web page you are pretty much able to do whatever a fully-fledged Java application could do, like access the full file system.
I know of no other platform that allows you to write true "web apps" that can rival the stand-alone ones.
Share Files To Large To E-mail
It matters because you don't have to toss Java out if you want to move to a free platform. This is a reduction of friction that's good for everyone. The choice of one or the other no longer has to be made. The "write once run anywhere" language will finally be what it said it was.
Friends don't help friends install M$ junk.
Why would you aim for 1/3 of the market when you can aim for 2/3?
Because, on average, I enjoy my job a lot more when I'm doing .NET work. I tend to spend a lot less time dicking around with XML files and the environment, a lot less time fighting my IDE (disclaimer, my recent experience is mostly with Eclipse and I expect the alternatives would be better, for me) and a lot more time writing code that solves the problem at hand. I understand that not everyone will have the same preferences or experience, but for me, that's much more satisfying.
I only need one job at a time, it might as well be one I like.
(I've got about double the Java experience, so it's not like I can't go that way if I need/want to as well.)
If you find Java's static typing inflexible and restrictive, you're doing it wrong. The great advantage I find with the level of restriction that Java puts on your types is that it enables brilliant development tools. Refactoring support is paramount.
Having recently completed a major refactoring of a Ruby project with tens of thousands of lines of code, I can say from experience that refactoring of an app written in a dynamic language can be a colossal pain in the ass. Just finding everywhere that a particular class is being used can take hours or days. With a decent refactoring IDE and a Java 5/6 (with everything generified) such an operation takes a couple of seconds at most.
Why do we the /. crown love Sun/Java?
Many of us used Sun boxes at Uni (I did) then suffered IBM boxes (although SMIT was quite spiffy) in our jobs. Strangely we started to wish we had the old Sun boxes back. (Or is this just me?)
Many of us moved from C (and C++) to Java, see above.
We love Java because we know Java, it does everything, and if you've grown with it, then it's OK. Sure, coming to Java from cold today it seems really complex.
Is Java perfect? LOL! No, not even close. But Java is fun to program in. Java programs aren't wedded to any particular OS/Hardware combination (I'd admit they don't quite live up to the "write once/run everywhere" promise, but it's close enough). Java has proved amazingly adaptable - and speed isn't really as much of an issue as the haters claim, if it was we'd all write assembler. Java isn't really far off the speed of C++. As for no multiple inheritance - do you REALLY want that?! There is a reason pretty much every phone has Java on it (don't tell anyone - but I quite like playing Tetris on my phone, thanks Java).
As for Sun, well they do make some really nice boxes, and they are giving us some great stuff (DTrace anyone?)
No, seriously, you're wrong. Just because you don't see that Java is being used for a web site's back end doesn't mean you haven't been using it. Personally, I like Eclipse, but then I'm a programmer. I used to use Azureus, but since I'm mostly on a Mac, I started using Bits on Wheels. Not a crack against Azureus from a functional or usability standpoint, I just preferred the "wheel" in BoW. Totally arbitrary eye candy.
The problem with Applets was that AWT was a GUI framework built on top of a web browser, which is already a (wait for it...) GUI framework. The only reason Flash succeeded was because web browsers didn't have vector graphic support ten years ago.
As for Sun, they have given far more to the open source community than most give them credit for. NFS anyone? There are more examples, but just for a moment wrap your head around the concept of what if Sun never released the specs to NFS. What would the BSDs and Linux use to map file shares? CIFS/SMB aka Samba?
So let's take a look at Win32 MFC. That was written in C/C++. So did that framework suck so much? Answer: good code can come from any language where the developer is sufficiently skilled. Bad code can come from any language despite any intrinsic qualities in that language.
- I don't need to go outside, my CRT tan'll do me just fine.
Ignoring the parent troll for a moment, can someone please show an example of where multiple implementation inheritance is superior (not just equivalent) to multiple interfaces and the composition design pattern?
I've really tried to find a case, but ultimately fail. I even tend to agree with Gosling that abstract classes were a bad idea. On the other hand, I can name innumerable cases where MI causes more problems than it solves.
- I don't need to go outside, my CRT tan'll do me just fine.
Oh, and another thing: I think he meant that in the situations where Python is too slow, Java would probably also be too slow. Those cases call for embedded C or other low-level optimization. I don't think he meant to say that Python is faster than Java.
Dewey, what part of this looks like authorities should be involved?
And if code bases never changed, I might agree with you. However, what happens when a superclass is changed, e.g., a new method is added? Much of the time, nothing. But what happens with MI when one superclass adds a method that already exists by name in another superclass? You end up in exactly the same solution as with SI; you use composition to arbitrate the ambiguity.
When interfaces collide, there is no issue. If a method is added to a superclass in single-inheritance, it rarely affects the subclass unless that subclass is too tightly coupled with private variables (the implementation) of the superclass; you'd be hosed with any change in the superclass.
MI may result in slightly fewer lines of code, but it makes for code that's harder to understand and more brittle in the long run. In short, it's little more than syntactic sugar with no programmatic benefits but several drawbacks with regard to complexity.
- I don't need to go outside, my CRT tan'll do me just fine.
If there were better alternatives to NFS, why didn't people use them or create newer, better ones? With all the faults of NFS, I don't know of alternatives that magically make all of those problems go away. Locking on remote resources that you want to be performant is a hard problem. WebDAV certainly doesn't solve that problem. And speaking of WebDAV, how would that have solved the NFS problem when it hadn't even been invented yet? Nor had HTTP 1.1 for that matter. Nor had HTTP 1.0 for that matter. Nor had XML, which it uses for metadata.
Saying that WebDAV or AFS should have been used back in the heyday of NFS sounds like someone suggesting that DOS shouldn't have been used in 1981 because Linux would be created ten years later. You could certainly give other examples to replace DOS in '81 like CP/M, but the fact that you don't realize that NFS was first leads me to believe you are too young to remember what it was like. To give you an idea, an implementation of AFS was only released as open source in 2000 by IBM. Where were the alternatives before then?
Answer: there weren't any good ones. And speaking of Samba, unlike CIFS/SMB, the NFS docs that Sun released actually matched up well with the protocol unlike what Microsoft released and Samba reverse engineered.
FYI: "NFS v4 (RFC 3010, December 2000; revised in RFC 3530, April 2003), influenced by AFS and CIFS, includes performance improvements, mandates strong security, and introduces a stateful protocol. Version 4 became the first version developed with the Internet Engineering Task Force (IETF) after Sun Microsystems handed over the development of the NFS protocols." - Wikipedia
- I don't need to go outside, my CRT tan'll do me just fine.
Once you have the region marked out, most editors can indent that region for you.
Really! Okay, here's some code:
print "Hello"
print "World"
Now, I want you to insert the statement 'if (true):' at the top of that code, such that the print statements execute within the context of the if statement, and I want you to use the editor to indent the code. Hey, you know what, don't bother, I'll show you what you get:
if (true):
print i
print i + 1
But, of course, that's not what I wanted at all. I wanted this:
if (true):
print i
print i + 1
The problem is, the editor has no idea what I want because, without understanding the semantics of the code, the fact that blocks aren't properly delimited means the editor can only guess as to the correct indentation for a given hunk of code.
Of course, this is a very simple example. But it also doesn't even approach the sheer hell that is refactoring larger bodies of Python code.
Ugh, apparently I need to choose a more explicit example, as you're too thick to understand. Let's say I have this:
if (true):
print "Hello World"
for i in range(1,10):
print i
print i + 1
Now, insert the for loop into the if statement, before print statement, and use the editor to reindent the block. And good luck.
Meanwhile, with C, I'd have:
if (1) {
printf("Hello World\n");
}
for (i = 0; i 10; i++) {
printf("%d\n", i);
printf("%d\n", i + 1);
}
I could then just copy the for loop, past it into the if block, get the editor to reindent, and voila, the code is correct.
*Now* do you get it? Please god, say you get it...
ok,wasting all mods points on this, but what the heck...
In python indentation is part of the actual language construct, it forces you to write readable, well indented code as it is needed, as part of the langage itself, in order to make the program work as intended. This is actually a feature in my opinion. i felt like you when I started wtiting python apps, that this whitespace business was something potentially dodgy, but it actually wasn't such a hard thing at all to get used to. and after a while it's actually feel really natural.
if (!signature) { throw std::runtime_error("No sig!"); }
You didn't follow my example. I said before the print statement, not after. And the result, using your emacs command, is as follows:
if (true):
for i in range(1,10):
print i
print i + 1
print "Hello World"
Which is surprisingly terrible. I had expected to at least do this:
if (true):
for i in range(1,10):
print i
print i + 1
print "Hello World"
Do you get it now? In a case like this, the editor simply cannot know that the last print statement doesn't belong in the for loop. So now, not only is my code improperly indented, it's actually *wrong*.
And your continued attempt to bring up the need to wrap code in curly braces entirely misses the point. See, in C, as long as I know where the beginning and ending of the block is, I can place the braces in the right place, and I know that my code is semantically correct. Get the editor to indent it for me, and it's still semantically correct.
But in the above example, not only did the editor indent the code wrong, the *semantics* are wrong. That means that, every time I move a block and reindent with the editor, I have to check every damn line of code, just to make sure it didn't get confused because, as I've said over and over, Python doesn't provide sufficient hints to the editor regarding where blocks start and end, and so it *can't* know how to do the right thing.
Therefore, in practice, I have found the indentation issue not to be a problem. In my eyes, python's main issue are the messages at program crashes. They are uninformative, and sometimes even missing. That and several other factors seem to indicate some remaining immaturity of the code parser, but for the rest, python really is a fast and effective way to program in OO. I see it as a kind of perl for OO problems. (I know that perl has OO, but it's never as integrated as in python). There are many things that can be solved with perl, and there many things you shouldn't even try with perl. Same goes for python.
molmod.com - computing tips from a molecular modeling
understand your point, really, you lose that part of editor functionality.
Ah, but it's more than that. The real point is that, if the editor can't figure out what code belongs where, that means *I'm* far more likely to mess it up. After all, missing a single tab can completely change the semantics of a block of code. IOW, Python increases the chances I'll mess up, and makes my job as a programmer *far* more tedious and irritating, just so it can force a particular formatting style on me. Thanks, but no thanks.
But you also gain the added insight in your code that you can see very quickly and with 100% confidence at what level of indentation a piece of code is.
Or you could let the editor indent the code properly and get the *exact* same benefits without fear that you accidentally mess up the semantics of your code because you misread something.
Heck, even if Python had both significant whitespace *and* a block terminator, I'd at least be satisfied. Why they omitted this, I have no idea, but it really strikes me as a glaring, pointless defect that just increases the odds that you can screw things up.
As for the rest, I couldn't agree more. But the significant whitespace thing really does actively keep me away from the language... it's just not worth all the trouble it creates for me.
Personally, given my choice, I'd go with a language similar to Ruby if I needed an "OO Perl"... though, my Smalltalk bias means Ruby annoys me in countless other ways (not to mention it's more glaring defects, such as it's dismal speed). :)