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?"
Sorry.
"Made up/misattributed quote that makes me look smart. I am on
Ruby on Rails Screencast
I have to say, I haven't heard near the hype about Ruby and Python that I heard about Java. Although I must admit, the Java hype has died down quite a bit.
Don't let the door hit you in the ass on the way out.
Too bad they went to rails, I'd rather they just went away.
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
Um, people move on. It's okay. I don't think the 30 java programmers are going to cry themselves to sleep tonight. Most likely they'll go buy another book and learn the next language, just like they did when java got big.
Difference between a brave man and a smart man: a brave man will die for his country. A smart man kills for his.
Whatever praise it gets is well deserved.
perception is reality
My worst write-only nightmare...
*runs screaming from building*
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
I work with a program that's not exactly new... minus the content we pass through it. There's plenty of refuge for Javanerds working with apps like that. Of course that means there would likely be a decline in pay.
Bury me in mashed potatoes.
"Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?""
God, I hope not. Anything but Ruby and Python.
(anything with c/c++ style syntax, that is)
I suggest you read Slashdot
Time to switch to Java!
[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.
Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.
I can't think of many languages where this is true and that's why I think I'll always appreciate Java. It was a case where a practical computing technology was built after the theoretical studies were done.
It was a language done right and the first in this manner I could appreciate.
My work here is dung.
(Slashdot reader) writes, "(Uknown pundit) wrote an article about (Technology that we're not currently fond of), based on conjecture and personal opinion. Does this mean that (Technology flavor of the month) is taking over?
The problem is, while the universities are teaching Java, their mailing lists only advertise jobs with c/c++ experience. Neither C or C++ counts for any credit at my school, but you need to be awesome in them to get a job out of college. Bottom line: the university doesn't want to teach you, they want your money.
"And we have seen and do testify that the Father sent the Son to be the Savior of the World"
1 John 4:14
Stop posting fluff articles in the absence of real news before the holidays.
Java isn't going anywhere for a while. It is a fantastic language for large scale projects simply because its very easy to write maintainable code AND its buzzword compliant. That latter fact alone will keep it afloat years after it is truly dead.
Don't get me wrong, I love Python and I have really high hopes for it in the coming years, but to declare that "enthusiasts" have left Java, seems silly
So, will the Slashdot collective make fun of them again when their latest platform du jour fails to live up to its hype?
;-)
They ALWAYS do
Where's my lobbyist? Right here.
Different problems, different solutions, different languages. As always, pick the right tool for the job.
ROR having (more) hyper-enthousiasts only means it's newer.
"Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?" Some of the people who have to be on the bleeding edge are at Ruby. It does a lot of stuff with minimal programming. Python has very solid segment, but its still and outsider, kinda like PERL. The rest of the coders are either at .NET or PHP. PHP is a great web language which is starting come out with some really solid desktop platforms (PHP/GTK comes to mind.) .NET does everything, web, server, and desktop and it keeps expanding every couple of years.
.NET in 5 minutes and have it execute on all the platforms I running, I sometimes have to make a deal with the devil and go with Microsoft. My 2 anyway.
I personally prefer PHP. It flexible and is great for my personal project. But when I can write something in
You say things that offend me and I can deal with it. Can you?
There are still a lot of companies, in their misguided foolishness, developing on Java technology. It was the buzzword so they jumped on the bandwagon. Nevermind a little common sense mixed with practical experience.
Nothing will make me happier than to see the piles of junk referred to as various types of Java technology fade from existence. The bloated, memory pigs that will happily do your garbage collection for you (sometime, maybe, perhaps, if it feels like it) sucked when they were first released and the suck fest just kept going. I will admit that java servlets did reasonably well, but there are other technologies that work just as well for that.
But it's going to be a long time before people learn to adapt and drop the dying technology. Those that do, will move on, those that don't wil move on to the unemployment line.
I'm looking forward to the Java is dead party myself!
Is it the engine behind it or the semantics/style of the language.
Of course it has. IT actually is not too far removed from the fashion industry.
about 10 years ago:
Cast off those old tired relational databases! It's all object databases! It new! It's modern! It's chic!
C++? So passe'! The greatest thing is Java! So trendy, so fresh!
In the past few years:
Object databases are not with it! XML databases are the way to go! So modern! So *you*!
Now:
It's Ruby on Rails! What are you thinking using that dingy old Java! So... last season! Step into the 21st century!
etc.
The only thing I can think of which is more fad driven are diet books and management crazes (E.g. '7 habits of Effective Plan Z 2 Minute TQM EManagement iCommerce Gurus for Dummies (but were afraid to ask)').
Yet another reason to leave IT.
putting the 'B' in LGBTQ+
I hope nobody takes this the wrong way, but both Python and Ruby seem to be "VB for the 21st Century" -- as in tools to build quick-and-dirty apps without all that annoying type safety. In other words, they don't really directly compete with Java at all.
However, I don't think either have even registered at all in the commerical job market, so comparisons to Java are especially silly. As long as the Java programming market is so huge, there will be plenty of hype.
Whenever I hear the word 'Innovation', I reach for my pistol.
No one I've met doing serious development is building on python, it's just too error prone.
I don't suppose you've heard of this company before?
There are dozens of others, too. I'll cite this page as a source, though it is by no means comprehensive.
He who has no
LISP, 1960.
They were right, I only had one class that specifically used C++ (in an MFC environment) and we were really only doing OpenGL programming in a predefined project. Other than that, it was all Java and some lisp/prolog for AI and language theory.
Read my sig! That's right, keep reading...
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
Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?
.NET. The religiosity people have towards Microsoft's semi-proprietary technology is definitely reminiscent of the 1990's Java hype. Especially among management (who think they've finally found the silver bullet).
.NET, because compared to MFC and traditional COM, it's a wonderful thing. But many people are going overboard on it.
No, the hype has moved on to C# and
I don't blame people for getting excited over
Don't blame me, I didn't vote for either of them!
Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
I am really just rediscovering Java now and the API's are very nice.
Java is stable, mature, and scalable, right out of the package. Python is nice for small projects and scripts but Java's strength is not the language. Its the api's and framework as well as the ton of third party software for it. For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling. Results vary drastically depending on who wrote what. There are tons of third party java objects and programs that co-exist and integrate with your java based servlets.
Java seems to have found its niche since multiplatform desktop applets never took off. Not to mention java is pleasant to debug and the tools are nice.
http://saveie6.com/
I also use LISP. But let's keep in mind that I said "practical computing." I probably should have included "object oriented" with practical.
... I think that makes Java a little more accessible to me than LISP.
Duly noted though, Paul Graham and company did a fine job on that language. I still enjoy using it in my AI classes in grad school. A very clean language but the topic at hand was Java, not LISP and I'm only 23 years old
My work here is dung.
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
That's why Java has been so successful. It made a compromise between performance and ease. It made a compromise between compiled and interpreted. It made a compromise between local applications and applets. It made a compromise between easy-of-use and formalism.
C++, which Bruce used to love, made *no* compromises, except to run C code. It wanted to include anything possible as long as it was fast, and it did except that it was so freakin complicated that even to this day sometimes compilers can't interpret the source correctly. In the same way, Ruby (and Smalltalk) also do not make compromises. They say 'everything is an object' even though that means computations are 20x slower even after decades of optimization. They say 'no type checking' (if it acts like a duck it is) even though it is pretty much a necessity for large or reliable systems.
Regardless of the level of hype, the real world of programming is about compromises. It's about Java, and C#. Sure there will be plenty of work at the edges for Ruby/Smalltalk and C++/C, but Java-like languages will be the center of programming for decades yet.
I used to be quite enthusiastic about Java--it had a lot of promise when it came out. But I think Java has stagnated and it's time to move on.
What are the problems?
First, Java never turned into an open standard like C or C++. Initially, it looked like there were going to be dozens of independent implementations besides Sun's and Microsoft's, but they have all disappeared. The only way to run a compliant Java platform these days is with Sun's implementation or one of its derivatives (IBM, Oracle, Apple).
Second, Java is focused on niche markets; most of Java's real-world use seems to be in enterprise apps, a market segment that by itself is not enough to sustain a general purpose programming language (Java may well be the new Cobol).
Third, related to the above points, Java has failed to evolve sufficiently. Sun has failed to address concerns and needs of the scientific and numerical communities. And many of Sun's changes have been hampered by backwards compatibility with the JVM (e.g., genericity in Java 1.5 is deeply flawed). And Java never acquired a reasonable native code interface, keeping it out of many applications.
Java has made a valuable contribution by demonstrating to many working programmers that features like garbage collection, reflection, and runtime safety are useful, but those features are essentially 1970's technology. Sun has failed to evolve Java beyond that, and that's why it's time for other languages and other stewards to take over. Fortunately, there are many other excellent languages being created. The Java language itself (but not the platform) will probably be with us for a long time, although probably running in many environments other than the JVM.
Java had the potential to be a lot more than just a transitional language from C/C++ to modern, safe, reflective languages, but Sun unfortunately has failed to realize that potential fully.
A year ago my school switched their programming class from C++ to Java as well. Because of this my school bought all new books. And now the "hype" is over and schools may have to change again soon thus losing a lot more money :( .
Reality is a big nasty dragon. Fortunately I don't believe in dragons.
did he actually do his homework on this particular topic, or will you be embarrassed in public if you use his explanation?
Most likely the 'hyper-enthusiasts' are suffering from irrational exuberance and therefore cannot be trusted. But it did sound marvelous during the explanation.
He who knows best knows how little he knows. - Thomas Jefferson
Yes, Java is no longer the buzzword of the day, but that doesn't mean that it is obsolete, dying, or anything like that. This is (at least partially) highlighted by the fact that MS is aggressively developing C# and the .NET framework. Java has its own niche, and that's a different group than Ruby. As the article points out, some decisions in Java syntax (in J2SE) were made for efficiency's sake, at the slight expense of programmers' convenience - and different applications demand different tradeoffs. It is stupid to compare Java directly to Ruby or RoR, because only a portion of Java competes with it.
That being said, today's buzzwords seem to be RoR and AJAX, though I don't think either will be knocking any of the competition (completely) out of the picture.
The bottom line is that the majority of programmers are bad programmers. These move to the easiest fad where the majority of people go. And that's not a horrible thing, it's just a thing most senior engineers don't care much about. Because, and I say this after interviewing tons and tons of developers, real devs dig deep on their own, and do not 'rely' on the work of others. And before I get flamed here, it's not to say they don't use the work of others, it's just that I've seen many seniors spend hours trying to figure out how something works, rather than spend two minutes asking for help.
p.s. I think Bruce Eckel is awesome -- "Thinking in Java" is rockin'
"Ain't I a stinka..." - Bugs
The old jolly guy will put his resume inside the shirts he throws to the audience next JavaOne.
"I don't blame people for getting excited over .NET, because compared to MFC and traditional COM, it's a wonderful thing. But many people are going overboard on it."
Miguel agrees with you.
Just another religious war.
C++ vs. Java
C vs. C++
C++ vs. Smalltalk
Lisp vs. everybody
Perl vs. PHP
Javascript vs. VBscript
VB vs. C++
Delphi vs. VB
Haven't we moved past this language is great but this language sucks yet?
You use the tool that will get the job done the best and easiest. If you tried hard enough, you could probably use the Lotus 123 macro language (showing my age) to write a web app, but would you want too? With someone of these languages, Python, Perl, PHP, Ruby, Java they are similar enough that they are all good enough for the same jobs. Languages are tools that programmers use to write applications. Personally, I like PHP and Ruby but I'm not knocking those that like Phython or Java.
Why knock that someone likes another language?
Why another religious war over Ruby vs. Java?
"What the hell is an aluminum falcon?"
Well done, sir, I salute you.
-- RLJ
There's a difference between "what's cool" and "what's used by businesses." I've seen this same boom-bust-settling-down cycle for many other programming languages. The truth is that there's a lot of Java and J2EE code out there now, some of it running very critical things. The key to being a successful developer seems to be constantly learning each new fad while maintaining at least some skillset in the "classics".
I can definitely see why Java has lost some of its appeal. The high memory requirements for all but the most optimized code are one reason, and the fact that many corporate datacenters are standardizing on Intel Windows/Linux/Whatever boxes make its portability less important.
Say what you want about Visual Basic, but as a primarily Windows admin, I can tell you that some of an organization's most important software tools were cobbled together in it. They may not be pretty, and may be a huge pain to maintain/support, but that's our lot in life.
I agree, but I think it actually IS the clean, consice, consistant language that makes it what it is.
Why do you think all those tools are written in Java?
Hmm... an IT person bitches and moans about the chaotic nature of progress: multiple technologies from multiple sources over decades? Ooh, pain. Different viewpoints to consider? Oh, god no!
Does the poster believe there is One True Answer? Is the poster a mathematics major or something?
Grooooooooooooow up!
I still use java every day but I will not miss the hyper-enthusiast. I've interviewed and hired people to work in java for years and I've learned a few things along the way. First, I've never hired someone who has obtained the official Sun Certified Java Developer status. I've learned that these guys have memorized a lot of the java library api's but their judgement is not grounded in the basics of computer science. For example, they have no idea how to choose between using a LinkedList or an ArrayList. The presence of LinkedList is redundant to the superior abilities of an ArrayList in their minds. I've been much better off hiring solid computer science generalists for java jobs whether they currently know java or not.
First line: But the majority of programmers, who have been relatively quiet all this time, always knew that Java is a combination of strengths and weaknesses. These folks are not left with any feelings of surprise, but instead they welcome the silence, because it's easier to think and work.
:)
That's exactly my attitude, too. Couldn't agree more.
You know what I liked most about the tech bubble bursting? All of the loudmouths, charlatans, and marketriods went elsewhere for a while. I got to do some real work for a change instead of building demos.
So the hypemeisters have a new favorite platform? Great! I can stop reading the slashdot posts from anit-hype nazis who only love to yell at marketriods. A pox on all of your houses, I say.
So a reasonable assumption is that 10 years from now we'll still be using sql and c++, we'll just have some sort of framework for those who don't want to get their hands dirty.
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 recently started coding in ruby, I'm not a rails developer. I've found it to be very useful for the kinds of scripting tasks that I've put to it. Everyone I've heard talk about it seems to be tired of listening to hype. Well it's not hype for me to say that I like the language and that it has been useful to me. If I had not picked up ruby, I probably would have picked up python instead. As it is, I'm very happy with the choice I made, and I've truly enjoyed the community support. All the rest is hype.
Can you give me a language besides Java, that I can use for developing apps for Windows, Mac, Linux, Web, Palm, and tons of smartphones? If so then show me. Otherwise, quit preaching that java is dead and let me get back to doing real work.
TheTiminator
Sheesh. Yup, the fanbois have left. Now the rest of us can get some work done.
I feel bad for the Python and RoR guys, though. The hypemeisters are definitely not the crowd you want crashing your party.
Welcome to the Panopticon. Used to be a prison, now it's your home.
I know alot of people are well versed in Java these days, but for the most web apps, it seems to be too complex for the task at hand. And unless you are running an open source Java app server, they certainly do not come cheap. Performance is another matter to look at, however as fast as todays processors hum along, its certainly not as big of a factor as it used to be. I do think its about time that these things be simplified. I think Ruby is on the right track even though I think its in its early stages and a bit unproven.
I hope it hasn't. Java is still an enterprise development language whose potential for new developers remains intact. Ruby and Rails have potential, they aren't be-all-end all solutions though. I program with both Java and Ruby. I can tell you there are times when one outweighs the other in benefit to use. Much code and pre-existing classes and examples for challenging situations have been tackled in java, providing a framework and foundation to re-use old code in many projects I've encountered. Ruby poses an incredible potential for new and fast application development, but I find myself often writing the entire program or large amounts of it from scratch, aside from the often use of Ruby facets The facets of Ruby which is an essential site for any ruby developer. With that said, sure it may not be as exciting as it once was, that doesn't mean its worthless to pursue and learn, even from its humble beginnings. My two cents.
That's what you get when you substitute Ruby for PHP in LAMP. You can pronounce it better when spelled LAMeR.
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.
It's not like fashion trends, in the way that they aren't cyclic like them. You probably won't see people hyping Java as the next cool language in five years. It's also not random, as Paul Graham noted, they'r all more or less going towards Lisp in functionality. We are walking away from languages based on how the computer work and towards languages more focused on how humans work.
To me the evolution of languages to be more pleasant to work with is a reason to go into IT, just imagine how it would be if the only languages avaible were Fortran, Basic and Assembler. Discovering Python made me interested in programming again.
Also c# can be seen as a descendant of Java but with a better IDE (Visual Studio) and also a great class library. Many are been seduced by this irresistible combination, even with the lack of open source projects other languages/frameworks have.
Java applications are usually supposed to run in a VM on the user's machine, which is problematic because it requires both support for it and good security. In many places Java is locked out because people heard the VM was insecure. I have never enabled the darn thing at all and never saw any Java app I wanted badly enough. Add to that the fact that embedded Java apps don't look like HTML and they don't look like the OS, and it is a recipe for disaster.
Server-side Java VMs are probably shunned because of their memory footprint, which is too large to allow a heavy load. That leaves lighter scripting languages like Ruby, which are used mostly because there really isn't anything better.
As for C++, it is hard to do web development in it due to lack of libraries. People also have this irrational fear of the language, fueled by decades of unjustified FUD. And, C++ programmers really would rather write desktop applications, even though the current fad is against them. IMO, this web application fad will blow itself over, just like all the previous attempts to make thin clients. The approach is particularly ridiculous now that even a $300 computer is more than enough for most mundane tasks. What will come after it? We'll either fix the desktop so that people will stop trying to find "solutions" like the web application, drop into a dark age, or whatever.
I say good riddance to them. Nothing contributes more to this industry-wide attention deficit disorder than these technology evangeslists that have somehow gained celebrity status, then abuse it to sell more books and fill seats in technology symposiums.
Java works for me. I get paid to do it, and I'm tired of all the noise.
Everywhere I turn, there's someone saying I should use Lua. Anyway...
My shop is firmly into J2EE, and we get a great deal of service out of the JBoss container and also the relational database object idiom of Hibernate. There are plenty of things to not like about Java, but most of the criticism against it seems to come from a point of view that's not well informed about the power that Java has for certain kinds of applications.
Oh well, the people who participate in this kind of discussion are those who have time for it, I guess.
-fb Everything not expressly forbidden is now mandatory.
While some people can't stop arguing about the merits of [yet-another-block-structured language], real mathematicians are working on continuations, monads, macros, type inferencing, theorem proving, etc.
:D)
Of course, Lisp programmers don't even need to touch a computer anymore. (They already wrote a program in 1970 that does everything they'd need to do
http://lambda-the-ultimate.org/ (no affiliation)
Please. For years the Java wonks have been calling performance a strawman argument, usually followed with "get a faster machine".
Now they're using exactly the same performance argument to argue against what is now one of the premier up-and-coming programming environments? Now the table turns; if ROR or my fave the Python-based TurboGears is too slow -- well then, get a faster machine. That argument worked with Java; now it works with Java's replacements.
In the course of every project, it will become necessary to shoot the scientists and begin production.
hit you in the ass on the way out
Not only the indenting is error-prone, Python is a dynamically typed language. All the checks that a compiler can do on a statically typed language like Java, C, C++, and C#, can't be done or can be done only partially on Python (by tools like pychecker).
In Python a simple typo is a real risk. For example, if you assign a value to an attribute of an object, and you mis-spell the name of the attribute, Python creates the attribute on-the-fly at run-time instead of reporting an error. This can sometimes be a useful feature, but it is very dangerous all the time. Not only is there no compiler that can validate your code, but such an error will easily go undetected even at run-time.
Another issue that I have personally encountered concerns reference counts. Python extension modules are written in C. If the C code creates a Python object, the C code often needs to update reference counts to allow Python's garbage collector to properly clean up objects. This is tricky to do correctly and working with reference counts is (or was, I haven't checked recently) not well-documented, so memory leaks or crashes are easy to accomplish.
Starting a Python program may take a few seconds at 100% CPU, because the interpreter needs to process all imported modules. This also disqualifies it for some purposes.
Dynamically typed languages like Python can be really useful for scripting and prototyping, but I wouldn't rely on them for mission-critical applications. You can quickly create a simple program but it is hard to be sure that it is really stable.
This article is a total troll and I wish the Slashdot editors would do their jobs. Also, while I code in Java, I am not a particular fan of it. Regardless, I hardly see any mass adoption of python or "ruby on rails". It's still at best, fringe. Ask any IT managers (who's opinions matter when it comes to mass adoptions) if they've even heard of Ruby or Python, and see what kind of answers you'll get.
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....
Java is still the only robust cross platform client side platform, which keeps it relevant beyond Ruby. The only platform that shows promise in that realm is Mono, and they don't seem to be focusing on it.
If you want to learn what "serious developers" think of Python just read articles at Python Success Stories.
While you are at it see Jython for Python interpreter for JVM. It has a very long track record already today. .NET.
Or take a look at IronPython from Microsoft: implementation of Python on
There needs to be a virtual virtual machine that would make Java truly portable and protect the programmer from all the pitfalls associated with programming in a virtual machine environment.
Bottom up.
Top down.
Structured.
Object orientd.
Agile / Extreme. (I think we just made all the way around the block once.)
The media industry (including online and offline publishers and to some extent the writers themselves), have simply found out that, at this particular stage of java's evolution, attacking java simply sells better than saying something positive about it. Attacking java attracts more eyeballs, gets more postings in response and basically generates higher revenue.
It will be interesting to see how much of a self-fulfilling prophecy these predictions on java's decline become.
As a simple test, I have given this posting a very negative subject. If you read this posting, please visit my website http://www.developeradvantage.com/. Within a day, I will review my website traffic and post a reply with some quantitative indicator of the increase in traffic.
FREE - Java, J2EE and Ajax Audiobooks for Software Developers - www.DeveloperAdvantage.com
What's WPF? I've never heard of it....
|/usr/games/fortune
Part of the hype is being generated by articles like this one, if not promoting java, then either questioning the promotion of java, promoting something else altogether.
Use what works best. Simple. I really don't care what THEY decide to use. This fickle, platform-du-jour nonsense reminds me of what I'd expect from a group of schoolgirls. There is no holy grail. Technology is what it is.
I think indeed some Java people are taking a look at ROR (who could not admire such a cool acronym?).
However I think what has happened is that the enthusiasm is now dispersed over a wider space. While there is still strong support for J2EE, people are also working heavily on a lot of other alternatives or plug-ins like Struts, Spring, Hibernate (to replace entity beans), Vekocity, and so on and so forth.
The volume seems lower simply because there are more areas under discussion instead of a lot of people talking about one thing.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I guess you have to be an OO purist in order to really appreciate it. I gain productivity when I write code in Java, because I already have loads of reusable object architectures that I can use. Do scripting languages or Ruby have ways of doing Aspect Oriented Programming? Give me AOP or give me death, is what I always say.
My name is Wootzor von Leetenhaxor
I was involved in a project about 9 years ago, writing a tabbed scoreboard in Java. It was a nightmare - a total hack to do something as simple as tabs. Java would have been better off to have stuck to a server side language. The applet side is a joke. I'd much rather code & run an X11 app. When I look at the complexity of getting a Java app going these days, I wince a bit.
... My point is that hardware costs have really come down, and in some cases it makes more sense to a) ship earlier, b) compensate by using more machines to handle the scripting overhead, c) have the means to iterate faster through development phases. Time to market is important. Customers don't care what the f**k something is written in, if they can't see it.
Scripting is a much faster means of development. You could say "yeah, but Java runs faster!", and you'd be right. I could (and have) write something that runs even faster in straight C
Every company is going to want to go from ONE proprietary vendors' product, to ANOTHER proprietary vendors' product (Microsoft being arguably the worse offender of the two). Now I know that philosophy and geek idealism are probably hard to come by when it comes to IT middle management, but when the shit hits the fan on your Very Expensive Application and it's due to a security hole/insidious bug/memory leak by Microsoft code, won't you be wishing that you could have your guys dig into the source and patch it yourself?
/quit my all-microsoft-tech-shop job, sick of windows and ASP and "microsoft uber alles" mentality
//fulltime RoR developer
///already makin the kizzash
The whole point of relying on open source is that you have no vendor lock-in. Not to mention the cost-effectiveness. But if you want to bet that Microsoft is just aaaalways going to be there for you, go right ahead.
Writing good software is hard, anyone who tells you different is selling something.
Most programmers program, trading their time and knowledge for money. The ones who hype have an agenda beyond that -- to sell themselves for financial or egotistical gain. The former are consultants (selling themselves, not the tools and practices they purport to sell for a liviing), the latter are that guy who spends all his time on the mailing list, telling you how great x is, and how stupid you are for uisng y.
Not that there is anything inherently wrong in this -- in fact, I'd argue that both groups serve a valuable function in our industry -- so long as people understand that the motivation for this has a lot less to do with the languages, techniques and tools directly than for the person who's doing the hyping.
We are agents of the free
or species :-)
(Posted anon as no ever knows how one of these will go over)
This whole Java/J2EE performance comparison with LAMP is rediculous. The performance aspect about which language runs faster (compiled vs. intepreted) is silly. It's not like the language is the only variable in a web application. Large sites use horizontal clustering and proper design principals to scale (LiveJournal - 50+ million hits a day????) Enterprises use Java cause they think they can get better performance by purchasing rediculously expensive servers and scale vertically..stupid, stupid. Typical management response. Let's be real...Java / .NET is ivory tower bullshit that allow vendors to over complicate the technology so that they can create new tooling products. I'd rather scale horizontally, not consume hundreds of megabytes of RAM to run one app, and be able to change a script without having to recompile and redeploying any day.
"With the advent of the language total annihilation is on the horizon for Java and all its developers. This new language/platform/stack is so revolutionary that developers are passing out from Ruby/LAMP/Python induced hyperventilation. Its virtually certain no one will write more than three lines of Java the day after Tuesday ever again."
;)??
Its getting seriously funny how many articles there are like this. Slashdot posted this nearly identical article about LAMP a week ago.
Why is it always language XXXX compared to Java rather than C++, C#, ASP, or even LAMP? I guess it means that for now Java is the king of the hill?
So which is superior...LAMP or Ruby (on or off the Rails
I actually do enjoy these discussions because there are always more efficient ways to accomplish specific goals. Java can take a bit to get started with, but once there it is unparalled in being the Swiss Army knife of software development.
Without the competitive efforts of the Ruby community and M$ for instance Java probably would get stagnant so I applaud you Mr. Ruby Developer (Rails or otherwise).
Just give me a call when people start converting complex Java apps to Ruby because its easier to extend and enhance.
Python doesn't have nearly the web-application support going for it that Java has. I've done both.
Mod_python is too primitive, and Webware for Python is still not ready for prime-time.
Java, on the other hand, has butt-kicking development IDE's (WSAD, JBuilder), libraries (J2EE, JDBC, Apache et al) and platforms (Websphere, WebLogic).
And most important... I can understand pretty much any Java code. I know Java shoe-horns you into some paradigms that feel constraining; look at the bright-side: that's what makes it so maintainable.
Python is an elegant language and all, but people can sometimes still get cute with it and write things to do stuff without obvious ramifications.
Webware is a breeze for cranking out a webapp quickly, but it's not close to enterprise ready.
(I've written web-applications in Perl, too. If I go to hell, they'll probably assign me to support someone else's Perl code... ummmm, using 'dictionaries' to fake structured data types....).
Java hyper-enthusiasts are alive and well in the world of mobile application developement. J2ME is the leading platform for developing cell phone applications, and provides the kind of platform independent framework that led to java's original adoption. Having done BREW and J2ME development, I am a strong evangelist of java on the handset. Since there are certain benefits to having an end-to-end system in the same language, I think that Java will have a strong position in mobile application development (client and server side) for the forseeable future.
That being said, J2ME isn't perfect. Not sure if cell phones could run Ruby, however....
http://www.flurry.com
E-mail and news on y
Having used Java exclusively since 1995, I've decided to try a webapp in python (turbogears).
The turbogears python webapp framework is a nice bit of tool integration for rapid development.
Python itself is a mixed blessing compared to Java.
On the one hand, it has very nice compact, in-built syntax handling of multiplicity (lists, dictionaries, tuples) as all powerful languages should have and java still lacks.
It has other simplicities and flexibilities that are nice.
However, the "pythonic" philosophy of "anything is allowed if you try hard enough
could be re-termed "moronic". It's just bad design to have multiple ways of
doing the same low-level thing in a language. Complexity multiplies, as we all
know.
Also, Python is not as platform agnostic as Java in issues such as byte-ordering
in data structures etc, nor is it as secure as java in this respect, because
java does not specify the representation in memory of its data objects, making them
more difficult to sniff.
Java also has other code security features that python to my knowledge lacks, such as class bytecode verification,
class loader security, etc.
Finally and importantly, while Java's (and its standard libraries') documentation is only moderately detailed, at least it is consistent and pretty complete.
The same cannot be said for python documentation, which is sloppy and incomplete, and
inconsistent in places.
So is python "progress" from Java? In some O-O and functional programming language respects
yes, but in platform quality, simplicity, platform-agnosticism, learnability, and security,
no.
We still need a new language that combines the best of these breeds.
Where are we going and why are we in a handbasket?
Thats very good that the enthusiasts are gone... Programming languages are to be discussed with reason, with enthusiasts you have too much emotion on the equation. Java have some pros and cons. Personally I still thinks that is the best language to make enterprise web systems. Ruby on rails is in the stage of "geek toy" and ASP.NET is as unstable as any m$ technology and the IDE is very costly. when you are dealing with huge companies, you can't just have the latest cutting edge technology. You must stand with what was tested, known and have a short time to market. with java you have multiple vendors competing to supply the cheaper, more secure and more performatic application servers. Java can be a pain in the ass sometimes because you need to follow the OO way of thinking and this can lead to some extra effort in the initial coding, but this makes harder to write unmanageable spaghetti code. I have 2 certifications in java and one in c#, and the market is not going to abandon those technologies soon, that I know for sure!
That god damned George Bush.
(isn't this obligatory now, like the Soviet Russia thing?)
Java doing anything faster than Ruby is about as likely as a garbage-laden dumptruck outrunning a Honda Accord.
XML databases? What kind of idiot defines their DB technology on a static data format (and a merely heirarchical one at that)? Do you mean that you use a DOM to manipulate data? If so, that's just stuffing a heirarchical DB inside a relational one, which is stupid 2 teh maxx0rz.
I just don't see how Python is going to make it big with such poor threading. This is quickly becoming the era of multi-core, multi-thread systems. I hate to say it but Java does have that covered. Sun's new T1000 and T2000 servers are targeted at this important and growing segment.
I suppose you could use Jython and get the benefits that way... (it is much slower and way behind C Python).
Before you flame me, let me just say that I spent a great deal of effort trying to build a threaded telephony server in Python and it was just not possible.
So, everybody was searching for the answer, and we got Java. Now, to find out what the problem was, we need larger, faster computers to run Ruby?
... and from the chaos a voice spoke to me:
... and I smiled and was happy, and it got worse ...
42, that's it!
"Smile and be happy, it could be worse !"
Sorry, it's great.
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...
I think you're absolutely right about how the IT industry tends to have a single-minded obsession with The Next New thing. I suppose it's partially motivated by a hope that some new technology will be the silver bullet to solve problems that have plagued the industry for ages - projects get missed and go overbudget.
Take ruby for example. Now, I'm not knocking it because I see a lot of things that I like. But when I look at it, I see it as basically a distillation of Smalltalk with concessions for LAMP programmers. Of course, we could all just all write in Smalltalk, but then it wouldn't be *NEW*.
However, for Java, Sun deserves a bit of blame. Most of what Ruby [on Rails] so great is not as much the language as it is a rejection of the methodology that Sun has promolgated. Alot of the frameworks that Sun champions (Struts, Hibernate, EJB's) are so overwrought and complex that they true implementations of such mostly exist in academic "proof of concept" apps. They require huge teams to develop for and support.
When you compare Java to Ruby as a language, the differences aren't all that staggering. But when you compare the mindset of "The J2EE Way" vs. "The Ruby on Rails Way", it's a very stark contrast.
Thus they're no different from Gartner pronouncing "Small Form Factor PC's will be hot next year!" or "This will be the year of Tablet Windows!".
Nothing Orwellian, no Central Planning, just the same sort of forecasting that happens in every trade & industry.
I've a number of friends who are subscribers to CAUS's & others reports, they say they're generally pretty on, and are rarely much of a surprise to folks paying attention in their fields. Indeed I was told 2 years ago by a buddy to watch, last year and especially this year look for holiday decorations to have lots of purple and black and raspberry and long skinny legs would be very in; he was right.
Just like in business practices and coding strategies there is a lot of group-think that keeps everyone sorta in sync with each other (beyond everyone knowing that hemlines HAVE to change up or down every few years). Occasionally there are huge shifts caused by outside influences, fluorescent colors in the 60's due to dyes becoming available, now shimmer surfaces because durable ones have become relatively cheap, but even those are fairly well anticipated.
If you're interested enough try writing a dozen or so folks you think are very 'in tune' with an area of interest, then next year see how accurate they were. If you can show a decent track record of getting good predictions then hey, I smell $$ subscriber report...
Oh, and those color predictions: Good to keep in mind when painting the living room, buying furniture or a new car.
I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
I never understood why CS departments started switching to Java.
Not everyone can be a professor. Some people need to do actual work.
If you're every debugging some method and trying to tell exactly what's going on with every variable in scope... you'll know what I mean.
Yes I'm kidding. I sometimes wish for lambda functions in Java... oh the humanity!
and has a compiler/VM to which you have no source code access!
The source is here: https://mustang.dev.java.net/
Um, the Python philosophy is supposed to be completely the opposite. To paraphrase: "There should be one, and preferably only one, obvious way to do it."
Where do you feel Python falls down in this department? Could you give an example?
Bear in mind that most of the "features" not included from C++ were examples of very poor language design.
There are some omissions from Java which are unfortunate, like pre-conditions and post-conditions, however most of the omissions were not present in Java's predecessors.
The only features of C++ which are lacking in Java and which arguably should be included are: operator overloading, and some variant of the const keyword (although not exactly like C++ const, which is hideously overloaded).
No serious programmer ever brags about million-line programs, or claims that lines of code somehow correlates positively with maintainability. You're attributing a point of view to "people" which they don't possess. Perhaps some friend of yours made a comment like that, which you now attribute to "people"? Typecasting containers is not done in Java, since it has generic containers. Re-implementing missing containers is very rare since the Java API has a wide variety of containers already (some even argue the API is too big). Recoding functions for different datatypes is unnecessary since Java has always been polymorphic. And there's nothing wrong with switch statements; they're syntactic sugar for if/else (I assume you're not opposed to if/else).I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary. I don't understand why the designers of Java don't just borrow ideas from Eiffel on this matter. I realize the Java designers are opposed to syntactic sugar in general, but in this case it would be justified, since a huge proportion of Java code wasted is on statements like "public Foo getFoo() { return this.foo; }".
Wake up, dickhead.
"Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
We don't want hyper-enthusiasts. These are the type of people that recommend a single technology for *every* problem and believe it to be the absolute saving grace. Usually, they have a poor grip on reality. What has probably happened is the delusion that Java will nullify platform differences may finally be starting to wear thin on these people.
I can't see how anyone would lament the loss of zealots, however. They always do more harm for their cause than good.
Both C++ and Java create objects this way for the same reasons. The syntax is important to basic OOP.
FooBar foobar = new FooBar();
The type "FooBar" could be a superclass type of the object being created. Then, polymorphism chooses the real object. Consider the code:
FooBar foobar = new SubFooBar();
foobar.draw();
The reference "foobar" only knows what a FooBar object can do. This keeps us from doing SubFooBar methods that a SubFooBar2 can't do.
The "new" operator is absolutely necessary. It tells the system to call a constructor function. Even Javascript has "new", and it is very weakly typed. How would Java know that foobar = FooBar(); isn't a call to foobar = this.FooBar(); for the enclosing class? Don't say that it should guess that an undefined method is a constructor!
If so, that's just stuffing a heirarchical DB inside a relational one, which is stupid
HERETIC! Burn him! Burn him now!
(Be wary of pointing out common sense truth to the believers, it tends to be hazardous to your health.)
*sigh*
The next level of inanity is storing compressed XML in relational fields to "increase performance".
That's it... I'm going home to mother...
XML is a known as a key material required to create SMD: Software of Mass Destruction
...that my enterprise systems running on HP-UX 10.20, Oracle 7 and Entera are the equivalent of shopping in the Goodwill that is in the back of the KMart?
I guess that I won't be attending any Paris fasion shows anytime soon.
Seriously, core business logic seems to get implemented and STAY implemented. Just ask the COBOL guys.
I think su meant pretty badly suited.
Sorry, But I just can't get rid of this strange mental picture of an ugly naked snake.
OSGGFG - Open Source Gamers Guide to Free Games
You could also think of Java as an old girlfriend. When you first meet her, she was exciting and fun to be around. She helped you out in a lot of tough situations where no one else could. However, over the years she got fat and other women seem more fun. Don't get me wrong, she's still sexy, but some of these other women you are spending time with seem hotter.
:-]
Our CS classes mostly used Pascal and Modula-2 when I was a undergrad/grad student during the 80s and 90s. One particular course named "UNIX & C" was offered as an elective. I went back to my alma mater last year and I discovered they're now using Java for nearly all of the CS classes. Nothing wrong with that. Professors always liked those type safe languages, but at least Java is used in the real world. However, if I had never taken that "UNIX & C" class back in 1987, I never would have developed the passion for all things Unix (especially Linux) that I have now.
A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so.
For programming courses in universities, maybe Ruby is a better choice than Java. Maybe Perl even is. But Python is not, because of this one simple feature that completely rules the language out, in my book, regardless of how good the language is otherwise.
The irony is that most trends actually get assimilated in some way, if not in the way originally intended. For example, many people are using "object databases" - they're using hibernate, which turns humble mysql or postgres into a beautifully featureful object DB.
> I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine ;)
So you think software maintenance is not relevant or important at all? You're not making a convincing case for "dynamic languages".
- sigs are for wimps.
Must say they lasted a lot more then i tought.
,god forbid, C, i have much less work to do, and it will be even more "multi-plataform" then java!
For a language designed by maketing people and implemented in power point slides, it sure did get a fair amount of adopters.
I had high hopes on java. But it was completely useless in a embeded system, too much hassle in a obscure plataform (irix, beos) and simply extra work on a common base (windows, linux)
if i write the same app on python or
Then, they tried to sell it as "the intraweb language" and all hell broke loose. Even php outdo it!
For some it is the byte compiled oo language, these people chose it because it looked like C++ but with no explicit pointers and a GC.
For some it is the platform, in other words they liked the large library of classes that came with it like swing/awt, math, networking.
Others liked it because of the technologies built on top of it or with it: J2EE (EJBs etc.), Applets, Servelets
Yet others liked it just because it is the most portable and functional language+platform they had ever seen. Here when a company makes a product written in C/C++ that they have to port to another platform, having a "compile once, run anywhere" language can cut costs of developing/maintenance dramatically
As far as the Java fanatics and cheerleader of the past years are concerned they probably moved on because that is what they do - they get excited about a new technology for a while, make a lot of noise then move to another new technology. Java is already used extensively in the industry and is not going away soon.
As far as Ruby and Python. I would have to say that Python is probably the best successor of Java. Why not Ruby? Because, as you say Ruby is a raw young language it doesn't have nearly the libraries that Java and Python has. The only context I ever hear of Ruby is when it is mention in the "Ruby on Rails" title. I know it is a more pure 'cleaner' object oriented language than PYthon, Python is just more practical, and more intuitive as far as I am concerned. I was planning to write my project in Java, but after a week of playing with Python, I was up and running and I believe I finished in 2/3 or 1/2 the time it would have taken me to write it in Java. Look at a simple code comparison in java and one in Python
: In Java
Versus the Python versionRuby is pretty close but I dismissed it as not having enough libraries and add-ons. With python for example, I can even run it on a Java platform with JPython and still access the rich java libraries. I can optimize parts of my code in C and either use the syntax extensions of Pyrex, or weave to inline that code into regular python code. There are good GUI bindings (Qt, wxWindows, Gtk and of course the default Tk, for those seeking to punish themselves), there is threading, networking, good regex support. My favorite is the native dictionary (hash table) data type. Just use something like "dic={}" to initialize an emtpy dictionary then "dic[key]=value" to use it, and that is it - no need for new no need to import anything.I program 95% in Java, 4% in shell, and 1% in Perl. I do not want to ever touch C and C++ again, although I somtimes do. Java always comes through for me. Gosling is a genius responsible for one of the most amazing technological achivements of man kind.
Here are some genius features of Java:
. Serialization
. RMI (along with security model)
. simple syntax
. amazing, standard API
. cross platformness
As a high school computer science teacher, I'm hesitant to say what university CS departments should use.
But I can talk about what makes good teaching languages. The purpose of a teaching language is to serve BOTH those who will be programmers, and those for whom CS1 is just an interesting (hopefully not harrowing) life experience. Python, with its VERY low floor and VERY high ceiling serves both purposes exceptionally well.
I use Python with high school freshman and sophomores as a "pre-AP" language, and find it a real joy to use. In fact it has really turned part of my professional life around, and made me renew my commitment to teaching younger kids programming-as-such. I'm having a blast.
I have used Pascal, AP-ified C++, Scheme, and Java. I've taught structured programming, objects, and functional style.
I find that teaching state machine programming with Python is providing hooks to start many wonderful conversations about variables, values, expressions, control, objects, garbage collection etc. etc... And, mirabile dictu: the way the math works relates to Algebra in a comprehensible way!
Most significantly, students are showing inititative and making up little hacks on their own in a way that they haven't since Turbo Pascal. As a constructionist kinda guy, that's the big win for me.
Isn't a Java Bean allowed to have a public variable xxx as a public property xxx in place of getXxx()/setXxx(), thus making those wrappers unnecessary?
I am really just rediscovering Java now and the API's are very nice.
It's been my experience that the opposite is true. Sun tried to shovel a lot of crap into the core JVM and wound up doing such a half ass job that my job is harder. For example, this month's JDJ mentions that there are more deprecated public methods in java.util.Date than there are non-deprecated methods. That's not the sign of a nice API. java.util.Date has also had significant bugs W.R.T. date parsing and DST.
Here's another one that chaps my ass. How many times have you inherited some code that does I/O only to find half a dozen different copy utility methods (i.e. copying InputStream to OutputStream, InputStream to Writer, Reader to OutputStream, etc.) They typically wrap everything in a buffer and/or use some wild-ass-guess at appropriate buffer size. What is the fscking reason that Sun couldn't put these copy methods into InputStream/OutputStream/Reader/Writer? The Sun software engineers, as implementers of the JVM, should have at least an inkling of a reasonable default buffer size, no? They kind of figured this out with NIO and added Channel copy methods.
How about XML? I always enjoy converting a String into a *Stream just so I can parse it. Oracle figured out how to do this circa Java 1.1, why the hell can't Sun?
I wonder if the chosen colors would be of any use as a leading economic indicator. Bright colors -> Happy Folks who spend money -> economy picks up. Dark colors -> Worried folks -> economic downturn.
FreeSpeech.org
whitespace has meaning in Python. (...) a programming language choice that introduces unnecessary barriers to blind students
How is that a barrier? I would expect non-blind people to have more problems with whitespace (they can hardly see if there's three or four spaces) than blind people (their interfaces should say each whitespace, or their fingers should feel them). Unless of course their interfaces collapse whitespace, in which case they should be improved.
Admittedly, I don't know much (almost nothing) about such interfaces, but I'm genuinely curious about the problems you say Python is causing.
(Note that Python doesn't care about the size of indentation: one-space indentation is ok.)
Puzzle Pirates. Proof that Java isn't dead.
Creative misinterpretation is your friend.
I really don't get it. I use Java to create non-web based apps. Java isn't actually very good for web apps, which is fine.
Rails, as far as I can tell, is used to create web based apps only.
Why are people here constantly saying my hammer makes a better hammer than your wrench does?
I don't use Java to write webapps, I don't use ruby to write hotkey scripts that run in windows and I don't use AutoHotkey to write enterprise apps.
If you choose to use Java to write a webapp, stop bitching and learn how to actually engineer.
Also, if you use Ruby with a team of 40 people or more on the same million+ loc non-web project, I'd really like to hear about it. My lack of personal experience renders me unable to judge, but Ruby does not seem to be the perfect solution for that type of development (to me).
You want speed and flexibility use assembly.
XOR A,A
yeah.. I don't really see the connection to COBOL either...
while (!asleep()) sheep++
Goal: Crush Microsoft. BZZZT!
Goal: Write once, run everywhere. BZZZT!
Goal: 100% Pure Java. BZZZT!
Three strikes. You're out.
Take a look and feel free: http://www.PieMenu.com
- Daily Micro$oft article... Check!
- Daily Google article... Check!
- Daily Java vs Ruby flamebait article... Check!
Seriously... you have a toolbox, the toolbox contains many languages. There is no 'best' language. Use the one that fits your project's requirements best.I remember 49152 was the location in memory (in decimal) that cartridges for the Tandy CoCo were. If you disabled the enable line on the cartridge, you could copy that memory byte for byte on to a cassette or floppy. If you wanted to execute the program on the cartridge you could simply type "exec 49152".
What is "SYS 49152"?
--fatboy
Not really much of a demonstration, but I've shown this to a few people when discussion comes up about Python and Java.
n eIntro.html
I was playing with Lupy, which is a rewrite of Lucene using Python. It provides essentially the same API. I took an example from Erik Hatcher's Lucene Intro (a directory indexer) and ported it to Python. I tried to be faithful to the original code, except where I thought that Python idioms made sense.
To me the code is much more readable and approachable, not simply because it is shorter (25 vs 34 content lines (excludes closing braces) or 31 vs 50 lines (includes whitespace and closing braces)), but the content lines are less dense (33 vs 39 chars per line).
The Python code sample follows. Erik Hatcher's code and full article is available at http://today.java.net/pub/a/today/2003/07/30/Luce
(look for the first code sample that starts with "import").
from lupy import document
from lupy.index.indexwriter import IndexWriter
from lupy.index.documentwriter import standardTokenizer
import sys
import os.path
def index(indexDir, dataDir):
if not os.path.isdir(dataDir):
raise IOError, dataDir + ' does not exist or is not a directory'
writer = IndexWriter(indexDir, analyzer=standardTokenizer, create=True);
os.path.walk(dataDir, indexDirectory, writer)
writer.close();
def indexDirectory(writer, dirname, names):
for name in names:
if name.endswith('.txt'):
indexFile(writer, os.path.join(dirname, name));
def indexFile(writer, filename):
print 'Indexing', filename
doc = document.Document()
doc.add(document.Text('contents', file(filename)))
doc.add(document.Keyword('filename', os.path.abspath(filename)))
writer.addDocument(doc)
if __name__ == '__main__':
if len(sys.argv) != 3:
sys.exit('Usage: python indexer.py ')
index(*sys.argv[1:3])
...their website colors are so !#%@ing ghastly.
These idiots...
n dex.html= /library/en-us/dnsql90/html/sql2k5xmloptions.asp
Oracle
http://www.oracle.com/technology/tech/xml/xmldb/i
Microsoft
http://msdn.microsoft.com/library/default.asp?url
you know, the ones that sell the most databases today. Not to mention just about every other successful commerically sold database.
>> stupid 2 teh maxx0rz
Very cogent and convincing.
The pace of "exciting" Java development has slowed down, so they've moved on to technologies where they can get that feeling of new and exciting again. I don't begrudge them. They have that right....but their departure doesn't automatically make what they're working on any better than current technology.
Moreover, they're making comparisons that don't make any sense. RoR vs. "Java" is comparing apples to oranges. One is a framework for creating web applications. The other is a general purpose programming language and environment. Are you comparing RoR to Do-It-Yourself Servlets? Struts? WebWork? Spring? RIFE? Such is the way once a technology enters maturity. If RoR is the Next Big Thing and takes off, we'll be having these same discussions in 5-10 years about some other technology.
Some of us have to write things a little more complicated than 'Hello, World.'
If a giant oil company wanted an abortion, would W's head explode?
"The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended"
It can certainly distinguish between private and public instance variables. Just prefix with __ -- say, foo.__bar -- the attributes you want to make private and the runtime will mangle them and make them not directly accessable. Tsk, tsk, 30.000 lines and seemingly not even a peek at TFM...
Yes, people will not be able to say foo.bar ( obviously ), but neither foo.__bar. However, they can take a look at dir( foo ) and see the result of the mangling: you can reference it via foo._Foo__bar ( supposing a Foo class ).
So, if the guy access a private variable, it's very obviously not an accident: it's deliberate. Then, if he's deliberately trying to access a private variable, let him get hurt. He should learn it the hard way...
Oh, you may think the language should prevent that? People in this side of the fence think of that java "feature" to be very limiting. There are some valid reasons why having direct access to private variables should prove worthy, so it's there to be used with care...
"small typos in function/variable names aren't caught nearly as quickly"
I don't understand what you mean by that. You mean at compile time or something? Test. and then test again. and then some more, just to be sure. To quote Donald Knuth:
"Beware of bugs in the above code; I have only proved it correct, not tried it".
By correct, he meant: it compiles ok...
"performance is far behind java"
Are you sure of that? Most python libs are just thin high level wrappers to C libs which are running natively, while Java libs will be running in the same JVM and using just as much memory. Besides, a very high level language as python has many useful operators and data structures builtin ( implemented in C ): i'm thinking specifically in lists and hashes, while Java has to handle the gigantic Collection API just to have something halfway-decent...
It's easy to measure benchmarks by just going with a simple recursive algorithm and declaring java the champ. But this does not count on real world matters. And i believe real world matters are far more taxing on java and its tons of jitted libs than on python and its many thin wrappers to native libs.
"a nice little scripting language."
ah, yes! So now we get to your point. It's just a "little scripting toy tool to do quick hacks", not capable of ever achieving the same level of performance of a "harder", more "sturdy" and "enterprise"-ready compiled language like java.
Now, i doubt why a guy who has python in so low account would have a 30.000 line project written in it when he had not even taken a look at the available documentation to know that you can indeed simulate perfectably acceptable access modifiers?
I know the answer: you're plain fucking lying just to wash your java ego...
I don't feel like it...
The hyper-enthusiasts were always jamming java into places it didn't fit well. Maybe now that they've gone away we can actually get some real work done with the language. They'll probably mess the ruby camp up for a while too, until the next shiny object... oriented langauge comes out.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Java Hype is like saying "C++ hype". Java is now an engrained language that is just part of most enterprise developers reality. It's just a tool and a glue that can be used any number of ways. Java is not PAST hype, and is just an engrained part of the computing world.
Horns are really just a broken halo.
At least at my company. When we started out, we were building a Java application server for Unix patforms, which mostly meant Suns. We couldn't afford Sun workstations for every developer though, so we used Windows on cheap Dells for development. Once a JDK appeared for Linux many developers dumped Windows and installed Linux on their Dells. After a few years of Java-on-Linux development, Linux moved from an unsupported skunk-works OS in our organization to a platform officially supported both internally by IT and as a deployment platform for our customers. Lucky for us, when our customers started asking for Linux support, we'd already had two years experience with out product on that platform.
Without a decent JDK for Linux, I'd probably still be developing on Windows, and my company certainly wouldn't claim Linux support.
"I look back at days before Java, and they seem like the dark ages of computers."
Come on! I believe the 70s to be like the Renascentist ages, with a few Leonardo DaVincis and Michaelangelos. OOP, VMs, IDEs, GUIs, functional programming... all born those days...
Lisp and Smalltalk had programming environments those days which could not be matched on features and sheer complete control of the environment up until recently with the likes of Eclipse...
The dark ages and the java era have one thing in common: people lived in obscurity, paying their deeds to God in the form of self-punishment...
I don't feel like it...
Sad to say, against my violent protests, my company did precisely that. Posting anonymously out of (deserved) shame.
a functional language is one structured in reducible expressions (as in, the lambda calculus/lambda function).
functional languages are LISP, Scheme, Haskell, etc.
Java and C are imperative languages (maybe could also be called procedural?)
"C included libc, C++ has libc+STL
... guaranteed to be on every platform Java was. That's one hell of a feature!"
If you call those comprehensive libraries, then I have a bridge to sell you. The 1.1 library (which was where Java first started taking off) had such features as
That's because Java is not a language with a standard library: it's a development platform, almost an OS, with an associate standard language with which you reference the imense API. It's almost the same as a sh script accessing the POSIX utilities: as long you're in a POSIX environment, you'll be able to use them, using the same standard sh scripting language.
Only thing annoying is that java is a lousy scripting language to handle what is otherwise a nice programming environment. Thankfully, Jython, ruby and others are coming along just nicely in said environment...
I don't feel like it...
It was pretty complete for it's original purpose: being the high level API of UNIX...
Back in the day DBMSs were still in their infancy and people used their own file-based DBs to store data. There was no web, let alone web servers, servlets and other stupidity. No GUIs, except some crazy concepts which didn't work ok on the slow hardware of the days.
Memory allocation, file, stream and string handling were all you needed to build functional systems.
It has remained that way for historical reasons, but i still believe it's ok. If you ever have a need for DB access, just pick an API among the many available. If want xml processing, pick one.
The one solution fits all doesn't sound ok to me...
I don't feel like it...
(java.util.concurrent)
The package makes things like read/write locks, check-and-set variables, and concurrent data structures readily accessible.
All-in-all, the default set of building blocks is just much less basic and when you're developing large-scale server apps it's just nice to use these larger blocks.
-1 zonk
You have Views on Java - fine. But trying to creating black PR just by picking up any tidbit of something that might show Java in any possible unfavourable way - I would have thought better of slashdot. So far only MS seemed to have been the punchbag.
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.
The next-gen Perl engine, meant to handle Perl6 (and 5), Python, and Ruby. While no one's forcing Python/Ruby to use it, they probably will anyway, because it will allow calls across languages -- in other words, Python and Ruby will be able to use CPAN modules.
Sadly, some design features of Ruby will mean that it will always be slow. Here's one: Did you know that when a method is called on an object, and that method doesn't exist, you can set a default method, whose first argument is the name of the method which they attempted to call?
Sounds cool, until you realize that everything in Ruby which has a name keeps that name around well into runtime, and so every method call (and there are piles and piles of explicit method calls) is done by name, at runtime. Same with class and variable names, and, well, anything that has a name.
Now, say what you will, but I don't think that being able to optimize the real speed bottlenecks by writing them in another language (perl, python, or even C) is a good idea. Yes, it makes Ruby fast, but then you have to be bilingual, and you may end up spending as much time writing the C and the glue to tie the Ruby and the C together as you save by writing anything in Ruby instead of C.
Don't thank God, thank a doctor!
> We still need a new language that combines the best of these breeds.
Hmm. Not sure if that is what you would like, but maybe try Pike? http://pike.ida.liu.se/
Been around for like 10 years, syntax close to C, usually described to be close to Python. Touted to be much faster tho.
Nothing can beat this beauty:
10 PRINT "TEXT"
then you would do
GWBASIC FILE.BAS
Beats "python file.py" every time...
Fake arguments involving hello world apps should not be taken as a way of comparing languages.
This is how the Linux 2.6 kernel does threads.
Java never was hype. It once was the new PL. It had garbage collection. But it never was hype. It was not flashy enough for that. It actually allways has been the absolute antithesis of flashyness. It was a slowpoke. Back then the VM was to slow for anybody to hype Java over everything. It's GUIs were (are?) ugly as hell. Yet it offered plattform independece and a good enviroment for those who could handle OOP.
The reason why so many people are now rather settling for Python/Ruby/Perl/PHP/Whatever is a very simple one: They are FOSS. They may suck in other ways than Java (no predictable GUI enviroment for these) and they certainly suck less than a PL that's 10 years old, but the main reason is they are FOSS. They will never be controlled by the whim of a MicroSuck or Sun.
In fact I'm quite shure that Sun prevented Java from hyping, in order to establish it as a constant classic. They could've easyly gotten into the RIA territory Flash/AS2 are in now but they didn't. They stuck to where the bucks were in order to sell their hardware. They moved from the client side to server side within a year or so and had no interest in hyping RIA.
Java never was hype and never will be. Along with all the downsides and upsides that come with it.
We suffer more in our imagination than in reality. - Seneca
as a consultant who develops in whatever the client wants, I have noticed a major shift over the last few years to .NET (mainly vb/asp). I was on the Java bandwagon and had nearly 5 straight years of Java and occasional PHP, for the last 1 1/2 years every project I have been on has been .NET, not one RoR or PHP. It seems to me the big losers are the swing apps, Servlet/JSP still seems to be semi popular but users just dont like the swing desktop (and yes I have seen many horrible & poorly coded swing apps). There seems to be a misconception that Java development is not productive, support cost are higher and time to market is orders of magnitudes faster with .NET based applications. In reality (IMHO) there are just alot of poor Java developers out there turning out bad code, and the same can be said for .NET but management perception always rules the day in the end.
I like java, but I don't love it. Lots of things are laborious and it doesn't suppot first class functions elegantly. Processing lists is tedious when you're used to how python does it.
;)
However!
As far as I know, Java still has far and away the best tools for web application development. I don't know much about J2EE, but there's all that to start with. Then there are the webobjects descendants. WO itself, and then open souce tools that do similar things (often a much better job of them and with far less pain from quirkiness): tapestry (templating), cayenne (persistence), hibernate (persistence).
I've heard suggested that the python framework turbogears might be set to take over as the leading webapp development environment.
But then - this article was about hype, not reality, so perhaps my coment is irrelevent?
Believe with me, my saplings.
I think the entire Python community is in debt for your comment, helping them realize the error of their dynamic typing ways.
Seriously, now, if you take a little less patronizing look of the situation, you'd realize that Python developers realize the merits, advantages and disadvantages of dynamic typing. Pythoneers dream of static typing via type inference (the PyPy and other projects), but they wouldn't dream of explicitly and redundantly repeating the declarations of all types. This would reduce Python's expressiveness by orders of magnitude, making it as low as Java's, while also making code very redundant and thus resistant to changes.
Python is not missing lessons from the past, and dynamically-typed code is just as scalable as static code, it just requires modularity and basic unit testing.
In fact, the more powerful approaches enabled by dynamic typing enable more powerful scalability. The lack of scalability is a myth, and Python projects scale up wonderfully (while retaining amazingly low line counts).
Seriously, I (almost) never have these bugs in my Python code.
Which is great until you get to be on a project big enough to have multiple developers
Whenever I hear the word 'Innovation', I reach for my pistol.
Java remains an excellent choice for serious web apps which you're going to want to maintain later.
Java remains an overly verbose and inflexible language that requires intensive and detailed study of the gargantuan API before ANY development work can even begin. I have never understodd the allure of Java, and I probably never will.
After reading the article, I've decided to at last take a glimpse at Ruby. First google result was this, an interactive web tutorial. I'm tinkering away like a kid in a sandbox. It's kind of fun.
Compare to Java. Here's the spec. You WILL need to read substantial portions of this before you even begin to program anything of substance. Learning Java, along with all its quicks, restrictions, paradigms and frameworks, reminds me of going to church and hearing all that nonsensical dogma. I never liked church. Ruby just reminds me of perl.
For me, a language has to be somehow fun to program in for it to be useful. You may find that ridiculous, but if I'm not enjoying what I'm doing, my work will be substandard. Java was never fun. I don't think java is even fun for Java zealots. Java has always felt like a chore.
I'm on lesson four in the Ruby tutorial. It feels like it could be fun. I'll let you extrapolate the future.
May the Maths Be with you!
You thought fashion fads just happened? It's much more organized than that.
There's actually a mathematical model for the spread and sustainment of fashions and trends. These are called self-sustaining norms in the paper.
The most facinating part of the paper is the revelation that many upheld social norms are in fact unpopular amoung the general population, but are sustained by essentially falsely sensed peer pressure. For example, most students privately disappove of heavy drinking, but nonthe;ess engage in thsi behaviour to "fit in".
I wonder if it's the same for Java programmers. They all secretly despair over their language, but nontheless continue to program in in "because that's what everyone else is doing".
May the Maths Be with you!
is because its about fashion this leads to a self-fulfilling prophecy. You say "forecast" but the nature of the organisation means that they have a habit making what they forecast come true on the basis that they forecasted it.
Plays violent online games as: Nerfherder76
Its like being at a party and realizing all the cool people left.
They are still to complex for end users to get and install. Most people can figure out java. The rest of the populations are just retards. Java rules and nobody can figure that out even 10 years later. dummy.
I recently blogged why I feel Java isn't growing as quickly as some of the agile languages.- is-dying.html
http://www.chen.net/~hubt/blog/2005/12/maybe-java
Summary: Java is great in a large scalable, all Java world, but that's just not reality. Today it's all about pockets of service oriented architectures tied together with agile, interoperable web services.
The consistency and quality of Java's class library has always been it's strongest suit, so it will live on for quite a while, but I can see why people are slowly shifting away.
This brings me to my other question. Why haven't we found a new paradigm for relational databases. I know a lot of the strengths, but it just feels like we could have done better by now.
Admittedly, they don't have the clout they used to, but neither does the garment industry in NYC.
Then there's the Color Marketing Group, which comes on like the RIAA: "Any unauthorized use or possession of CMG's copyrighted Color Palettes and/or related information shall be prosecuted to the fullest extent by Color Marketing Group.!!" Read their 2006 color plan. Consumer electronics will go to a shinier silver next year.
...dabbled in it years ago, but didn't find any use for it, but that has nothing to do with my opinion
In fact it sounds like you have no clue whatsoever about Java, from a developer's viewpoint, let alone system administration. You sound a lot like one of those sysadmins who gets whiny when you have to reconfigure a stock redhat installation.
Sure mod me down, but the grandparent post got it right. Java was and still is a capable oop platform, and the best alternative to C++ to-date. And it does run well on many platforms -- if you'd actually done any development with it, you'd find it's a pretty small percent of the time that you have behavior differences you have to code around.
O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
And here I am still coding in perl. Nobody's enthusiastic about perl any more. But it's still my favorite web development language. Funny how the trends go.
Cheers.
Java evolved out of C++, which also has a gargantuan spec, and C, which also is spec-based (at least the K&R book is something you'll need to read). And you need to understand the gargantuan operating system libraries to get anything done, which are different on UNIX vs. Windows vs. Mac OS X. And there are no standard UI libraries across platform, though you have a number of choices...
Java is more productive than C or C++ were, which is what its creators really wanted it to be. It's not a scripting language, which has a different value system.
-Stu
It's interesting, the amount of hype being generated really depends on who you talk to. In some people's worlds, .NET is a complete non-player. In other people's worlds, it's all that matters; Java is a fading memory (and what is this weird Ruby thing)?
.NET as the next "silver bullet", sometimes helped along by Microsoft doing CIO or CEO-level pitches. But I find architecture groups (good ones, anyway) are a bit more level headed, they see Java remaining important, particularly with the advent of these lightweight containers. We've spent 10 years as an industry building a marketplace for standard tooling, utilties, infrastructure and support for Java, it would be a shame to start re-inventing the wheel again for another platform. I would rather see new languages adapted to run on the existing Java infrastructure (the VM, the API's that work, etc.)
.NET infrastructure ecosystem single-handedly, but I'm not sure the software industry can afford to do a "rebuild" at this point, which was largely justified by Y2K and the rise of the Internet. Java's timing was absolutely imeccable to get the most impact at a time where things were changing the most. We may, of course, have a similar era of change in the coming decades, but I think it may be a while before Java's success / adoption cycle is replicated.
Based on what I see in financial institutions, I agree that many IT managers have latched onto
Sure, Microsoft is big enough to build a
-Stu
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.
Azeurus
IntelliJ IDEA
And while not Swing-based... Eclipse??
It's not a big lie, but it's not perfect. And it's arguably more pervasive that other so-called "cross platform UI toolkits", which if you'll recall in the late 1990's, were pretty rare...
-Stu
>Nothing can beat this beauty:
>10 PRINT "TEXT"
>
>then you would do
>GWBASIC FILE.BAS
10 . "TEXT"
then you would do
RUN
or, gasp, simply
. "TEXT"
T.
My other sig is Funny.
You would have noticed the remark that most languages have some big projects that use them... Google is a nice and high profile, on the other hand could one ask himself (herself) what the requirements are for a language in a project like that and if that means it has to be such a great language (but I guess you haven't and you would not have responded this way if you had). Sure some people at NASA use Python, there are also people there using Fortran/Forth/Smalltalk etc... So that's definately not a case in your case. Once again a major part of the people that do really interresting stuff are not talking about it...
2. Byte code engines such as Java, Mono C# and Python average 7-12 times slower than the first tier...
.NET CLR.
Well of course Java is slow for very short benchmarks like this! They are totally unrealistic as a measure of typical Java application performance, as java was never intended to run like C: small command-lime apps. To get good performance from Java (and you certainly can) you need to give the Hotspot optimiser time to work. You simply aren't going to see this benefit in less than a few seconds.
To show this, I have run the Java benchmark with multiple copies of the input. The results are as follows:
1 copy: 1.449s
5 copies: 1.561s
25 copies: 2.175s
100 copies: 4.480s
It processes 100 copies at a rate 15x it seems to process 1! This is because the optimiser has kicked in, and because a significant fraction of that time for 1 copy involves start-up of the JVM and class loading.
Note that this 15x covers the supposed difference between Java and C++!
Java can provide very high performance for server-side systems where code can remain in memory and can therefore be highly optimised. The same is true of many other byte-code engines, such as the
We come from different worlds ;-)
;-) ).
I've been in many different projects using many different tools, and have seen things work and not work.
Since you're original statement said you mainly know professionals that prefer Python (That was before I started posting, allready appealing to athority there?), it's obvious that you're in some big Python shop. Hey if it works for you that's just great.
Just keep in mind that there are many languages and tools out there and many very good people who after working with Python still like to stay away, I have yet to meet one in person who prefers Python (but then again that may also happen someday
Anyway we'll never agree because we're from different worlds.
The Java territory is pretty much tapped out in terms of publishing and expensive developer conferences.
The people leaving Java are just headed for new wide-open territory, where they can write the books, become big names, and make loads of money.
September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
I just checked out some Ruby source code for the first time and..oh god, I just threw up in my mouth a little.
-- For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling.
Yahoo is a succesfull business that's serving 4 bilion pages a day. It's using PHP.
Name one site/business of a comparable size/revenue that's using Java?
Marketing literature and CS college indoctrination aside, where do you derive -- empirically -- the notion that 'for large sites Java is still the best way to go'?
When has Java *ever* been the best way to go for anything? Examples?