Departure Of The Java Hyper-Enthusiasts?
TomH writes "Bruce Eckel has an article at Aritma, where he posits that 'The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism.' Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?"
No one I've met doing serious development is building on python, it's just too error prone. Ruby (and on rails) are definitely gaining serious adherents though. Particularly with ruby likely to become a first class JVM language, Ruby's future looks pretty bright. Ruby may well replace java as the syntax of choice for developing big web apps.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
[Fuck Beta]
o0t!
I think that Real People are getting Real Work done while the flashy enthusiasts no longer have to toot the horn of Java.
Java is faster than Ruby and as bloated as it may be, there are a ton of J2EE applications you can purchase and modify to suit your own needs. Not to mention the plethora of development environments - hibernate, JMS, JNDI, torque etc etc. ROR is nice but let's get real - ruby isn't as fast and the few applications around ruby aren't nearly as mature as Java. Having said that I'm hoping Java will get opened up by Sun but I'm not holding my breath.
2 years and no mod points. Join reddit. Because openness is good.
PHP sucks, it's a lousy language with crappy syntax and barely existant error checking.
Python is an ok language but its interpreter is slow, and that's coming from a Java guy.
So, in summary, suck it, I'll keep writing Servlets for Tomcat.
Start Running Better Polls
I would imagine that .NET is gaining much more of the Java base of applications than Ruby and Python combined. That is no disprespect to those two fine languages. Microsoft wrote .NET to compete with Java, and that is exactly what it is doing. I am working on a project right now where the last version of the app was written in Java, and the new in C#. When interviewing for jobs a couple of years ago, I think I interviewed with at least 5 companies that were doing the same. This is hardly scientific evidence, but I have a much easier time believing that companies would switch from Java to C# than to other languages, if they are going to switch.
Great ideas often receive violent opposition from mediocre minds. - Albert Einstein
When will someone make a new Ruby framework so everytime we mention Ruby, Rails is not automatically in the same sentence? Ruby != Rails. Rails is fun, I do like parts of it, but it is not the only thing in Ruby web development. I see why people like it, but it leaves a lot to be desired in parts. ORM for instance is not always a good thing. Most Ruby development is not with Rails. Please stop talking about Rails like it is a godsend. I would think Rails if anything should inspire you to make a better framework after seeing what someone can do with Ruby + Established Design Patterns like MVC.
You thought fashion fads just happened? It's much more organized than that. The "in" colors for US fashion are chosen 22 months in advance, by the little-known Color Association of the United States. Color forecasts are issued to subscribers, and the textile mills, dye manufacturers, and clothiers start to gear up for the coming seasons. Because there are some long manufacturing lead times to produce fabrics in huge volume, the style decisions have to be organized.
"Pinks and fuchsia were everywhere in spring 2003; CAUS members knew this in spring of 2001."
Here's the activewear color plan for 2006-2007:
Color changes in fashion do not happen by accident.
I never understood why CS departments started switching to Java. It's a proprietary language, a behemoth library, uses confusing concepts even in early programs (such as the Hello World program requiring a class declaration), and has a compiler/VM to which you have no source code access! (True, nowadays you have gcj to look at, but that's by no means the reference implementation.)
CS departments, I think, should be using Python for instruction. Not only is Python an easier language to learn, but it's more intuitive and more closely resembles pseudocode you see written for theoretical computer science. For example, in a theory of computation book, you may find a definition of a Turing Machine as a 6-tuple. Well, Python has tuples, so you can just say
# turing machine M is a 6-tuple
M = (Q, T, s, b, F, f)
If you need to pass to a function (the encoding for M), it's easy to do so: just pass M. etc.
Python also supports other concepts common in pseudocode, like "for i in x" syntax, and associative arrays being a built-in type really helps with dynamic programming problems. Etc.
Python has an interactive shell where students can try out code to play with the language, a very helpful learning tool. It also has a high degree of transparency and allows introspection, so students can see how something like an object system actually works.
Also important, the main Python implementation (CPython) is open source, and the development of the language is done in a community-oriented fashion.
Finally, Python has two extremely high quality books written about it, which are also 100% free. One is called "How to Think Like a Computer Scientist: Learning with Python" and is found here, and the other is called "Dive Into Python" for experienced programmers, and is found here.
I'm not saying that Python is the ultimate language, but I think everyone has to agree that it's a better choice than Java for programming courses in universities. I know my data structures/Java course was 90% about "how Java works" and 10% about "how to solve programming problems." In a Python course, I think that ratio would be inverted.
Yeah, my CS classes started out with Java. I don't want to start a huge debate, but I think it's a decent learning language, especially good for 100 level courses. Of course, you should move on past that... We ended up having a good mix of five or six languages while dabling in a couple others, but starting with Java was a good way to introduce the concepts of OOPLs without the added difficulty C++ brings with it.
Excuse my speling.
Making The Bar Project
It always seems to me when I see this argument that it's the "but it's not type-safe" people that don't get it.
;)
I, like lots of other dynamic language proponents, come from a background in type-safe languages but eventually I realized that in most cases static type checking did nothing but slow me down. It doesn't matter if your code is correct at compile time, it only matters if it's correct when it's being used and the reality is that type-safe and dynamic language users verify this the same way, wth automated testing.
Why then, should I bother jumping through the hoops of type safty?
I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine
Jacques Surveyor summarizes Doug Bagley's benchmark opus to shed light on this important comparison:
"What emerges from examining the Bagley Benchmarks is that programming languages are breaking out into 3 speed tiers for raw computing power:"
1. Compiled native code languages C, C++, GNAT Ada95, OCaml are the fastest. No surprise there.
2. Byte code engines such as Java, Mono C# and Python average 7-12 times slower than the first tier...
3. Interpreters such as Ruby, JavaScript, PHP and Rexx average 100-200 times slower....
You could look at it the other way round; if there's a mistake in a Java class, you can't easily work around it. And I can think of two recent incidents where this has been the case for me.
The speed issue is a factor, but I personally can't see why anyone would prefer Java over Python for developing commercial projects. Java's limitations are pretty frustrating sometimes, and there are times when you need to copy-and-paste segments of Java that could be avoided in Python. Java's simplistic and long-winded syntax means you have to do things the long way more often than would be convinient.
> It was the first platform with a highly complete API set included in the core,
Python predates Java. When I program in Java, it's always a pain to replicate the functionality I get with Python's default libraries. Python comes with "batteries included."
> it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI)
Perhaps, I don't know early Python history this well.
> it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.
Python has had compiled bytecode for a long time. And it's also clearly object-oriented.
Unless you mean the first such language pushed by a *corporation* rather than by *enthusiasts*.
|/usr/games/fortune
To be fair, Java's hype was well deserved.
:-)
No, Sun's marketing department should praised for the hype. Sun leveraged Netscape to rename whatever they called javascript to be called javascript even though it had nothing to do with java. Sun started calling everything java except coffee. Javastations, javaos, hotjava, $300 Linux computers at Walmart that had the "Java Desktop System", which I cannot figure out if Java is in it or not, I think its just Gnome.
Java's supposed to be hype was because it was a cross-platform, write once, run anywhere language and portable across systems with compiled bytecode that could be run in a jvm. Somewhere I have heard that it was more like write once, debug everywhere. Java has almost died for GUI apps because the implementation did not live up to the hype. Java is now mostly found in app severs and whatnot as a middleware between web severs and databases.
Java's implementation has caused me headaches as a system administrator and computer user for 10 years now, and I've been over the hype for quite some time.
I have no beef with the language. I dabbled in it years ago, but didn't find any use for it, but that has nothing to do with my opinion of the implementation. Its the fact that I have had so many issues with it over the years that has caused my opinion. These issues have been Linux support, Matlab problems due to java, Oracle's universal installer that had issues because of java, Sun's "web installers" that have had problems, Netscape crashing for years because of java, etc.
From what I hear, Java has fulfilled a real demand in the app server market, and I'm fine with that. I don't do that kind of work anymore, so I have no involvement with it. But when I did, we had java problems, but this was years ago.
Personally, I believe that the hype is still floating around as witnessed by:
If Java has lost its hype, it's only because it's already accomplished all its goals.
I'm not sure what the goals were. I was under the assumption that it was a cross platform application environment, completely with a cross platform GUI. If this was the goal, I am unaware of an example of its success. There are only a handful of examples. I believe Eclipse might be a success, but I'm unsure if it is entirely written in java or not. Apple has a java control program for their raid array that mostly works, and there is Azureus, but I personally don't like that either because of its heavy resource requirements, and it would not work on my Mac with two users in two different accounts using it at the same time. Oh, I forgot about OpenOffice. Again, I don't think that is entirely written in java, and I simply do not own enough of a computer to run OO, but I tried. The document that I was trying to open was created on a 700MHz or so PC, but I could not do anything with it on my PowerBook G4. I asked the person to simply export it to a CSV so I could work with the spreadsheet.
Being that computers are so fast, if Java was a working cross platform GUI language and free, I don't see why at least 90% of the programs available for computers are not Java. If I owned a company that wrote a GUI program, and if there was a cross platform GUI language and implementation that worked, I certainly would use it. Even if portability was not a desired goal, why not open the door to 100% marketshare with one writing?
I'm by no means a Java luminary, but I have been coding Java professionally since 1997. I lived through the bad old 'applet for everything' days, and having to roll my own client-server communication protocols, then moved into Servlets, JSPs, and finally full blown J2EE applications. I was there at Java One in 2000 when the hype was incredible, when I honestly thought I'd be retiring at 35.
Me, I'm now riding the SOA wave. (when I'm not writing powerpoint presentations).
ROR is great, but IMHO SOA is where the J2EE hype went.
Granted, some of the frameworks, like Stackless and Rails, may not run on these tools, YET ... but there's really no reason to start totally from scratch and throw out a nice VM and a nice set of libraries...
[RoR] is now one premier up-and-coming programming environment...
.NET or any of a host of other Enterprise solutions. It's not just speed, although Rails *is* considerably slower than Java, even when you navigate the nightmare that is FastCGI. It's also the supporting tools that Java has in abundance that Rails hasn't had the time develop. Things like comprehensive unit testing (and code coverage monitoring) simply aren't possible in a Rails environment.
Hehe...thanks for the laugh.
Rails is basically a hobby-ist environment. It's useful for internal projects that don't have to be performant or scale up to more than a couple of concurrent users, but beyond that, it's tough to compare it favorably with Java,
Java and J2EE are extemely fast and scalable when you avoid the few nightmare APIs (Swing, EJB, etc). We've built a complex, data-driven site with Spring and a few other nice tools that has scaled incredibly well. By far our biggest performance concerns are database related. The Java tier comprises only about 10% of the total response time (which we've kept sub-500ms even under load, except in extreme cases). Rails just isn't capable of meeting this kind of requirement.
I don't mean to bag on Rails...I've actually done a couple of internal projects in it that needed to get done fast. And some of the core concepts behind rails (namely convention over configuration) are starting to be considered as possible feature-adds to frameworks like Spring. Ruby is a great little language and I would *love* to be able to use Ruby-like closures in Java. But it just simply isn't an enterprise development environment yet. It may get there with time (it needs a faster Ruby runtime, a native Ruby websever to rid itself of the FastCGI albatross, a good testing environment and some essential third-party stuff that Java has gotten over the years) but it simply just isn't there yet.
"Don't blame me, I voted for Kodos!"
Just use some naming conventions. Every sane project does. Personally, I use "_protected_member" and "__private_member".
While I don't know Python, and maybe I'd get used to this naming convention after a time, it sounds like it would be very annoying.
[ I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary. ]
It's worth mentioning though that the language doesn't force you to implement the accessors. If you don't think the wrappers buy anything, you can just make the members public.
Nope. I won't agree to that, for one simple reason -- whitespace has meaning in Python.
A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so. Wow, thanks for that bit of news. I guess I will have to tell the blind guy at work he can't use Python.
Hold on.. he said powerbook g4. That could be a lot slower than 1200 mhz. I don't know if you know this, but there is a big difference in performance between an 800 mhz and 1200mhz ibook for example. If he has an early version, there is no way in hell he's going to run openoffice. Its a big bloated piece of crap.
.NET. Python and Ruby are ok languages and could be good as web languages. Like java j2ee, asp/ASP.NET, php, perl, and whatever else they are not for everyone.
.NET though. The problem with php is that it is worse than java about compatibility. Java may be implemented poorly, but there isn't a 180 on the spec either. I dare you to run php 4.0 code in php 4.40. Hmm.. the environment arrays changed.. hmm.. functions behave differently? I wonder why... Now try to get mysql 4.1 to work without using old passwords. Oops. Backward API compatibility means nothing to the php folks even in a minor release. Ok back on track, the point is there are benefits to java, .NET and newer languages. Its called compatibility.
Java apps run very fast if they are written correctly. Limewire and Intellij Idea both run very well on my ibook. I've even tried a quake 2 port in java. Works great.
As for problems with java, its got issues. The write once, run anywhere "Promise" is a big lie. Try to write a swing app and run it on windows, linux and OSX to see what i mean. Java is great on the server end simply because it does run on windows, linux and osx though. Tomcat runs on all three and thats a blessing. Now if mono would start working correctly I could switch to
I personally hate php so much I use java. If I could afford a windows server, I would run on
MidnightBSD: The BSD for Everyone
I, like many other people out there, want to see this "hello world" problem solved in any new language that I am learning for illustration purposes and because it gives a feel about the language, for example: what are the delimiters?, are any variables declared?, are there any object being instantiated?, is there a need to import any libraries for I/O? and of course, how many lines would be needed to do a basic task of outputting a string to a console? Most computer books that introduce a new language, if you have seen any, will include these type of programs and for good reasons.
In this particular case the hello world program doesn't show that Python is the absolute best language out there, but it does show that even to print a string to the console java needs 3 or 4 more time the ammount of code that Python does. The implication is that _in general!_ to solve the same problem in java one would need to type more lines of code. I could have shown you a 2000+ lines little project I wrote and the n an almost similar solution written in Java that took about 3000+ lines, but don't you think that would have been a little too much?
But since you brought your example in an attempt to show how stupid the "print "text" example is, let's see what one would learn just from it anyway. So we have:
then "python file.py"as opposed to:
then GWBASIC FILE.BAS
Just from that I can guess that both are probably interpreted, both are high level (no need to allocate memory, or set up interrupts and load anything into registers), both languages are probably not strictly object oriented because there are no objects being created, both have built-in statements for console output, strings are enclosed by double quotes. also no visible end-of-line or end-of-statement characters are there, so whitespace might be used as a delimiter. Now what is different about them: Because one has a line # number I assume that it probably relies heavily on the GOTO statement and the other one doesn't. Now that is quite a bit learned just from 2 "stupid" "hello world" examples...