How Much Java in the Linux World?
jg21 writes "Java is 'incredibly heavily used' in the Linux community, according to Sun's James Gosling, one of Java's co-creators. Gosling was debating Stanford's Lawrence Lessig, Apache co-founder Brian Behlendorf, IBM's Rod Smith, and others at JavaOne this week about the possible merits of open-sourcing Java vs the market's demand for continuing compatibility. But Behlendorf seemed not to agree. So who was right, how many Slashdotters are also Java users? Is "incredibly heavily used" an overstatement by Gosling, who after all helped create the language and therefore might be biased?"
Afaik the most heavily used language is C/C++ and not java. Although its used in openoffice and jedit, no other java programs I use regularly spring to mind (unless they're masquerading as something else). C/C++ ar ehte most heavily used, not java, since its used for the kernel and all the 'base' programs
95% of all computer errors occur between chair and keyboard (TM)
Check out http://jakarta.apache.org . All of projects are under Java and they are highly sophisticated open source project. Also some of http://xml.apache.org projects are under Java too. So I say not maybe highest usage but sophisticated apps are written under Java and most of them are open source.
Never learn by your mistakes, if you do you may never dare to try again
I develop radar software and I'm writing it in Java. This is done for cross-platorm compatibility though, not just because I want to run it on Linux.
Might try Java if the Mono JVM works well, but seems Novell's focus is on C# first.
If we didnt, do you think we would be whinging every day about it not being open source?
Damn, I left my good sig in my other pants
I,for once, admit to being a newbie on Java.I have played around with the various LInux distros and haven't messed with Java too much.(Only 24 hours in a day after all).
Break out the coffee pot & caffine tabs.It's gonna be a long night.
Geek Hillbilly
You don't want to step on Sun's toes by using the name "Java" in naming something you made with it, like "Java Invaders".
..then you're not in the fucking industry.
simple as that, really. it IS heavily used(along with others).
I was surprised to learn that Java is used more than Perl or C++ in projects listed on freshmeat.net.
Hi,
my team is in charge of the technological foundations for all the Internet related apps pushed by our employer. Linux / Apache / Tomcat is used EVERYWHERE for all our online banking and trading systems.
Access to the legacy system is also done in Java.
I also clearly think we're not alone doing so.
I work at a fortune 500 company. My present Java project is hosted on Linux and it's planned that all upcoming projects will be as well. We are even looking at Mono for hosting our legacy ASP apps, but all new development is Java on Linux. I guess someone is tired of getting viruses that disrupt our network.
I'm hooked on the stuff. If I don't have a cup first thing in the morning the whole day is shot.
I think Java should be free. Down with Starbucks!
Start up a JVM process and you'll find that it makes incredibly heavy use of resources. That's what he means, incredibly heavily used ;-)
Just have a look at the projects hosted on sf.
There are 12588 projects in Java. Right behind the 13922 in C++ and the 13785 in C.
So I guess, Java IS used a lot.
I just don't trust anything that bleeds for five days and doesn't die.
I work for a company that produces a J2EE application server and J2EE web applicatons, so I'm pretty much exclusively Java and exclusively Linux. I've been using Java on Linux for work for the last five years.
Well we do not accept money from anonymous cowards ;-)
Organizations building web applications will pick a technology (Java, PHP, Perl, etc.) and then the OS to support it. No one in their right mind picks the OS then the web technology. That's just nuts.
Wal-Mart for example went with Java and Linux for their website in their early history. It's on Java and Solaris x86 today. Now what is it about Solaris x86 that could convince a cost-conscious organization like Wal-Mart to make the switch?
With Java development, the OS is completely marginalized. The question is which OS is the operation group in the organizations in question willing to support.
not all of us enjoy java. I have a measly p3-1ghz with 192mb of ram and when mozilla and a few other apps have filled it up for every-day use even the *smell* of java makes me sick, my lappy starts swapping and mozilla crunches to a halt.
That's just j2 plugins in my browser... openoffice with java takes 60+ seconds to start, and you think java is widespread?
seriously java might be nice but for some things it really isn't. Everytime I start a solaris admin tool using java I think "okay it saves sun development time". But in Linux? no way.
I wouldn't even touch java with a 10ft pole.
Well I guess I use Java apps a lot. I am forced to use windows for some applications so to feel at home I tend to search for cross platform programs when I need some thing. These tend to be Java based. I then install them in Linux and windows and it all works out. I would say that 3/4th of my every day programs that I use are Java. Though that could just be me. :P
I ate your fish.
Java is indeed heavily used - in some areas. It's in extreme usage "server-side", and many people develop applications in Java - for servers.
;)
On the client, however, you'll find it far less often. I use a java client when no other alternatives exist. Java has always been an incredible memory hog for me. I don't like using java on the client. It's mostly slow and unresponsive.
Personally I vastly prefer to use C or C++ programs, as they tend to be much nicer to use. In addition, they tend to have the same interface as the rest of the programs in my desktop environments.
"Rune Kristian Viken" - http://www.nwo.no - arca
Linux is heavily used in the Java community...
While I do cross-platform C/C++ development as well, when I need to make sure it's cross platform, I use Java.
Portable, standardized language and interfaces are what gives Java it's power. The community process has provided a reasonable pace of new feature integration, and has abandoned a few implementations that weren't really "ready", much as an orphaned code fork would be.
Open sourcing Java would be a mistake. Unless protected by a strong consortium of members (JCP) or by a strong backer who refuses to sell out to any one interest (M$ platform-specific extensions), Java would rapidly fragment into several code forks and become essentially useless.
It may take time to get features in through the JCP, but it also ensures there are no hastily implemented hacks making their way into the system. Quite frankly, the vast majority of OSS projects which don't come from Linus, Apache, Mozilla, or IBM have proven to be an absolutely disgusting mess of poorly and un-documented code. Java's embedded documentation is an elegant solution to the problem of keeping API manuals and source in sync, but it seems most OSS developers still haven't evolved past the "what, you can't read code?" mentality of the teenage "l33t" programming snob.
OSS means no sanity checks on feature creep, portability verification, documentation verification, regression testing, and all the other enterprise-project aspects of development that make it a useful technology. I've lost track of the number of times I've encountered platform-specific hacks in OSS code that weren't properly #ifdef-bracketed, or which just completely incompatible with other O/S implementations.
In short, Java is critical because it is portable and managed. The fact that Linux is supported is important from a rollout standpoint, but the underlying OS is (and should remain) irrelevant.
I do not fail; I succeed at finding out what does not work.
Do your research. Gosling is a crreator of Oak. It's true that Sun bought out the company that built Oak but Gosling was the visionary behind the entire concept.
The key, though, is that we've found we get the best results (e.g., as close to running universally as possible) by compiling on Linux (as opposed to on a Wintel box or a Mac box). Folks using anything from Mac OS 8.1 and Win95 to the latest thing all have access.
It seems that the usefulness of Java is limited to web applets/cellphone-apps and other specific things.
Judging from its popularity, it seems people are applying Java elsewhere. Why?
Java does not excel in performance, expressiveness, simplicity or power. It does not have generators, closures, dynamic typing and powerful dynamic features.
Why prefer Java over Python in the general case? If your answer is performance, why not choose Pyrex or C for the performance-critical parts, for a much better/faster result?
Not intended as troll - I work at a multinational financial institution. While most of our trading systems need incredible speed, and are done in C++, there is a firm-wide push to develop most of our server processes in Java. I am not a Java fanboy, but for many applications, Java is just easier to manage. To get code up and working quickly, Java is great. (if you're in the unfortunate position to have to write windows apps, C# is pretty quick as well) Lusers are lusers in any industry, but traders are generally more thickheaded than most, and they like to have software that works "pretty well" yesterday rather than perfect in 3 months.
My company uses Java for multiplatform client-server application development (oil-gas industry vertical market) on Windows, Linux, and Solaris. Because of the need to include some native libraries (in C++ and, ye gods, Fortran (damn old scientific types)), the resulting code isn't a completely easy port, but it's hell of a lot easier than if we used straight C++ and GUI library of platform. I don't know why we didn't look at Qt, probably perceived licensing costs (I'm just an interaction designer).
Maybe you are unfamiliar with the concept of the '/' character, but where I come from it is commonly used to denote alternatives. As in: most people use either C or C++.
HAND.
X crashing is almost always a sign that the display driver is at fault, and not the application. True, the application might have tried to do something unusual, but it is then the task of the display driver to respond in a correct way, and ensure that X continues running. Applications, running on X with a proper driver, should not have any capability to crash X.
He said "Java is 'incredibly heavily used' in the Linux community", not that it is the "most heavily used language".
A subtle but important difference.
I use Java on all four of my main platforms: OS X, Linux, FreeBSD and Windows. I tend to use it for projects that are larger than I would feel comfortable doing in Perl. An added benefit is they are cross-platform, just like Perl.
I started using Java in 1997 on Windows, and it followed me when I expanded into different operating systems.
I really like C, and use it for some work-related and recreational programming, but when the "rubber meets the road" and I need to get something done within a short time frame, I turn to Perl and Java. Perl, mostly for data parsing jobs, and Java for the more "permanent" programs, especially for graphical network clients.
I've been using Java JRE's since 1.02, and they have really grown in power and speed over the years. I have no problems using Swing apps on my 800 MHz iMac or my 1.7 GHz Celeron Linux system. They even run very well on my 533 MHz Celeron running Windows 2000. While they may not have the raw speed of a native app written in C or C++ (especially graphical apps), the performance I get is more than adequate for the job being performed.
No matter where you go... there you are.
Damn straight!
Put identity in the browser.
Gosling is right in that many people that don't want to work with Windows but want to make a living developing software embrace Java because it gives them the opportunity to work in their favourite environment - Linux. That is at least true for myself. I consider myself in the Linux fold, like Gosling says, and I develop Java. Having said that, there are very few client side java applications I use, but for server side stuff and web applications, Java is great.
It seems that every time Linux is discussed on Slashdot, everything revolves around KDE, Gnome, office suites or editors...
Java is not the best for command line programs mainly because VM initialization is expensive (in terms of time).
True, although this has improved over time.
I have written a number of command line utilities, and while the first call to one of them requires some patience (five to ten seconds), subsequent calls to any of them are just as quick as native programs because the JVM program and the runtime environment are in file system cache. I use those tools a lot and so I don't mind the first call being slow.
I should try some day to compile one of them using gcj. Haven't looked at that in a long time.
Anything that carries the Java name must be java compliant. To be java compliant it must have passed the Java TCK published by Sun. The TCK is only available to licensees.
I don't believe that open sourcing Java is a good idea - if anyone could fork the codebase in any way they want versioning becomes an issue and you potentially loose cross JVM compatability, not just cross platform.
The volume of Java use on Linux can be judged by taking a look at the operating systems that Sun directly provides Java VMs for: Solaris, Windows and Linux. This has been going on for years, even before Sun's recent 'conversion' to Linux use. This was because of demand from Linux developers. It makes sense: Most server-side coding is now done in Java, and the fastest growing server operating system is Linux.
I regularly use the LDAP Browser, which is written in Java, since it's the best free LDAP browser/editor I know of.
- There are many very great libraries. E.g. OJB is a great database layer and SWT can create nice GUIs. All these Apache Common Tools are also very great and allow quick application development.
- Eclipse is the best IDE I ever saw. The great refactoring features and the hot code replace speed up development immensely.
Sometimes I'm not the own who chooses the plattform of a project. In the last years these projects were allVery simply, I have no place appropriate for Java.
It doesn't fit on a microcontroller (like a PIC),
it doesn't have multiple inheritance,
it requires the right JVM,
it doesn't have a #include to keep parameterizations in one file,
it is actually write-once-debug-everywhere,
too many things in Java are only available as precompiled packages (open source in Java is a very rare thing)
and doing anything interesting in Java requires a native method anyway (hello, C!).
I use C instead. It's truly run-anywhere.
(for those that claim that "multiple inheritance is obsolete and I should be using "implements", remember that "implements" really means is "here is a routine with the same name, that we gaurantee is _different_ source code and will therefore NOT be bug-for-bug equivalent to the code you thought you were getting. Have a nice day and thank you for using Java".)
My company uses macromedia's coldfusion extensively, the latest version is a J2EE application. The linux version has proved to be incredibly reliable. Other CF users might like to comment on their experience ??, but I think this a very good example of how good the linux/java combination can be
We do a lot of Open Source work, but by far the bulk of it (especially for enterprise level applications) is done with Perl.
Of course if we were "bigger" or writing "bigger" applications, Java starts to see some advantages, but the biggest hurdle is to actually get a reliably installable version.
Sure, we can download it from IBM, or from Sun, or from Blackdown, but they all have differences of opinion, differences of quality and differences of ideals.
We use Debian for all of our systems, and every other damn software package we run is built and works for Debian, and plays nicely with everything else. But not Java. There's no standard place that it gets installed - to the extent that some packages will successfully identify that you have it, and others won't. It isn't in synch with the libc or libgcc that's current at any point in time. Since I upgraded my laptop to Mozilla 1.7, Java no longer works: not that it was ever particularly reliable.
So while there might be some wonderful advantages to building applications with Java, the general flakiness of my experiences with applications written to use it, means that I can't develop for it, because I can't inflict that flakiness onto my clients.
Partly, of course, this flaw is because Debian's approach to licensing means that something with the shackles around it that all JVM's will have, will never be part of core Debian. In fact though, that's mostly the case for any distribution, even the commercial ones, because they are all depending on open-source licenses for all the rest of the environment, and to be in synch with those, you have to be part of everyone's standard install.
Commercial distros must have to put lots of effort into making their setup work with their chosen JVM, rather than sticking the horse in front of the cart and making their chosen JVM work within their environment.
I sure would like to see an DFSG free implementation of Java, and I don't understand why this entails Sun "losing control" of the standard, and why they are in such a panic about allowing that to happen.
You mean this FreeBSD JVM?
The TCK is not available to licensees and there is not a cost to developing JVM's. Case in point, Kaffe is a clean room JVM implementation. They pay nothing to do development. They can't call it Java until they pass TCK but even they agree they lack key features of a fully implemented virtual machine.
All other points are either a draw or worse than C++.
Try this:
1. Get your compiled C++ Linux excutable.
2. FTP or SCP that binary to a machine running a different operating system.
3. Type the command to start the executable.
Doesn't work? Then perhaps Java does have some advantages.
OK, let's stick to the same operating system. You upgrade to a 64-bit processor. Does your executable automatically run 64-bit with optimisation? No? Another advantage for Java.
Using Java and Linux is really a great long term solution that allows can keep you TCO down for a long period of time including migration to normally incompatible systems. For most companies they are afraid to change their platforms because all their custom applications will not work on the new platform or will have a lot of problems. That is where Linux and Java come in. Linux as an OS runs on many different platforms x86, PPC, Sparc, ARM and more. Java can run on many different OSs. So if they wanted to switch to a different hardware platform then all their software will still work or if they don't like linux any more then they can switch to an other OS without loosing their applications. That is the Beauty of Linux and Java it doesn't put you in a Box of what you need to run and who you will need to pay to keep you business going.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Thats funny seeing as SUSE and Slackware DO ship SUNs JDK.
There are some drawbacks with Java too:
In all, this means that when resource consumption is not an issue, Java is a good choice, but when I want something lean&mean I'm using C, or even script-programming.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
then you could take it to mean : The most heavily used language is either C or C++ (but not a combination of the two). Such is the curse of natural language. :)
I know this doesn't square with the original poster's second sentence, so I'll concede that you're probably right that TheCoop doesn't grasp that C and C++ are indeed quite different languages (syntax notwithstanding).
But just to get back on topic: It seems to me that Free/OSS server code is heavily slanted in favour of C and not C++ or Java. Actually, I can't think of a single Free/OSS server that's written in C++. And I can only think of one Free/OSS server written in Java, namely Freenet. Quite sad, really, since there are still lots and lots of buffer overflows and sprintf vulnerabilities being found every day.
HAND.
What would we lose if all Linux Java apps suddenly disappeared?
The ability to develop for one of the most widely used server systems (Linux) in the most widely used server-side development language (Java).
You are probably right that C and C++ are more heavily used by Open Source developers.
If we look at the number of jobs being offered, however, it appears that Java is now the number one language used in business, having passed C and C++ sometime in the last two years.
For example, here are the current numbers of job listings at Dice.com:
8284 - Java
5714 - C
4993 - C++
7967 - C OR C++
Funny, insightful, whatever.
Corporate rock^H^H^H^HJava still sucks.
And if we're talking heavily used, let's talk about Bittorrent. Written in Python. Runs on whatever OS spins your daisies. Doesn't take a half hour to fire up the VM.
if Java is is so good why dont they program it in Java?
Oh yes you can make a little hobby project that compiles java into native code but without the accreditation of passing the TCK and being certified as a true JVM, businesses and others wont use it!
There is an interesting piece on Anne Thomas Manes' weblog, which I shall copy below:
The key here is decent.
...as a dy trader, there is no way I could manage without Java enabled on my system. What I did though, to move the entire java directoty to a windows partition from where I mount the executable. This helps me a lot since, when ever a [new] distro is out, I do not have to re-install Java. I simply specify my old windows based path to apps like Konqeror and the rest, then life continues. All in all, Java is a blessing to me.
The Free Software world tends to use Perl/Python/Ruby/TCL for this kind of compatibility. Mono also seems to be gaining ground rapidly. But there are also a lot of free Java software, sadly most of the apps I've tried don't run in GCJ.
Analogies don't equal equalities, they are merely somewhat analogous.
If only more Free Software authors would test their software with GCJ...
Analogies don't equal equalities, they are merely somewhat analogous.
That's factually incorrect. The FreeBSD group is a Sun licensee (not big bucks). They simply lack people to work on the beast. I'll give you a hint. If you actually looked at the FreeBSD page I linked to you'd realize they have a whopping *1* person working on it.
Java 1.3.1 is pretty solid on FreeBSD.
As for compiling Java, there's a language spec out there. I've taken code and compiled with IBM, Sun, and MS compilers and it went just peachy. All the code I wrote since '97 compiles clean on IBM, Sun, and MS compilers. And amazingly they all work the exact same way on the different platforms.
Bottom line: Licensing the JVM code doesn't cost you big bucks (see also, FreeBSD). Using different vendors doesn't require you to do anything fancy with Java source code or run time environments (see also, Apache Org.)
Corrected link:
SourceForge Projects by Programming Language
From the page:
- C (13785 projects)
- C++ (13922 projects)
- Java (12588 projects)
That's very interesting. Even though I'm a Java supporter, I was surprised to see so many Open Source Java projects.
...the only thing that I can think of that my wife and I use Java for is when we play Yahoo Pool against each other. I also used to use it for Limewire before I became too paranoid to use that anymore. Oh - maybe for OpenOffice.org too.
;)
FWIW I've been using Linux as my desktop OS for 3 or 4 years, and my wife has been using it as her desktop OS for the past year. The idea of actually buying software is more and more foreign every day.
There are two seasons in my world - Hockey and Construction
Now, try this:
-download your 500 kb Java app
-try to run it
Doesn't work? Then perhaps native code has some advantages.
Ok, let's say you have a preinstalled JRE. You upgrade your JRE and half the features in your Java App stop working. Your second Java-App needs the new version? Too bad.
Linux is not Windows
I don't develop any Java software, but my current editor of choice is Jedit, a Java-based editor. I use it every working day on Linux.
All of them do almost all their work in open source environments.
Seastead this.
Care to back this up with some facts? If Java has done anything, it is trying to stay backward compatible too long. Not a single method that has been deprecated has been removed. There are quite a few Java developers that would like to see the JDK cleaned up of those.
For example, even the entire Swing library hasn't been updated to use JDK 1.2, eg., it still uses Vectors instead of Lists, just for keeping the backward compatibility.
If only I could come up with a good sig
it requires the right JVM
Most people use the latest JDK and that's it. No problem. A C program also requires the right compiler unless it's trivial or you want to descend into ifdef hell.
it doesn't have a #include to keep parameterizations in one file,
It has import.
it is actually write-once-debug-everywhere,
Actually, it's not. At least not everywhere. In my Java experience since 1996 I've yet to see that debug everywhere nightmare. And I've touched a lot of operating systems and Java software projects. Maybe I was lucky. But debug everywhere? Ridiculous. But it's a catchy phrase to spread around if you don't really use Java as you claim in your subject line.
too many things in Java are only available as precompiled packages (open source in Java is a very rare thing)
and doing anything interesting in Java requires a native method anyway (hello, C!).
Tough. If people don't want to provide source code, that's their decision. I've used binary C and C++ libraries all the time. As long as they're documented, that's okay. And yes, some things requires native calls in Java. But very few, really. If you catch yourself using JNI all the time you may have picked the wrong language for the project in the first place. Java isn't right for anything.
(for those that claim that "multiple inheritance is obsolete and I should be using "implements", remember that "implements" really means is "here is a routine with the same name, that we gaurantee is _different_ source code and will therefore NOT be bug-for-bug equivalent to the code you thought you were getting. Have a nice day and thank you for using Java".)
I claim that multiple inheritance is overestimated by some because a thing is rarely two or more other things. You get other problems with MI like the diamond of death.
I use the following java based apps at work constantly on my linux box:
* jEdit
* Squirrel
* Eclipse
At home I make good use of jEdit as people use notepad in the GUI. Commandline though I use vim/vi.
~~ Behold the flying cow with a rail gun! ~~
Java already is "forked," by Sun itself! There has never been a release that didn't break something in a prior release, with the result that shipping anything written in Java to a lot of heterogeneous users is a major hairball. You have to specify the exact Java build(s) that your code will run on, and it's up to your users (or YOU when they call you for support) to make sure that the six other back versions floating around on their machines aren't screwing you up. If you want to bundle a JRE with your code to make it idiotproof, Sun makes you take out a license.
An open-source Java might pick up forks along the way, but FOSS is market-driven in the sense that only really good ideas will get and keep a following. And the best ideas will be widely supported. Look at Apache and all the others. The vast majority of "forks" are for very special purposes and don't end up stranding all that many people when they die out.
On balance, open-source Java is the best of all worlds.
I've been through C++, Perl (still use perl quite a bit for quick scripts), and on the web PHP and ColdFusion (yuck!). But java offers so much more! First, it's object oriented - not "can be" but "is". Second, there is a TON of development in java, so there are libraries for just about anything you can think of. Third, when it comes to JSP/Servlets, it is not tied to a single vendor like ColdFusion (our previous internal web app platform at work), so we can use Tomcat today, and potentially move our apps to WebSphere in the future without completely rewriting them. Best of all, the apps I write can easily be developed, compiled and tested on my Windows workstation just as easily as on my linux machine.
Plus, consider the power of two java utilities - jUnit (http://www.junit.org/) and Ant (http://ant.apache.org/). With a single command on the command line / xterm, my cvs code downloads locally, my classes are built, unit tested, and then packaged into distributable forms! What did we do before java?!?
"The large print giveth, and the small print taketh away" -- "Step Right Up", Tom Waits
Portable, standardized language and interfaces are what gives Java it's power.
:)
Yeah, because gods know that no other language has ever been portable or standardized.
Unless protected by a strong consortium [...] Java would rapidly fragment into several code forks
Just as has happened with those other highly portable, standardized, cross-platform languages like Tcl/Tk, Perl, Python, etc. (Oh wait, I forgot, there are no other portable, standardized, cross-platform languages, my mistake.) Yeah, clearly, every language that isn't under the rigid control of corporate-owned constortia is instantly subject to massive forking by the dangerous denizens of the dark side. Open-sourcing computer languages makes the baby jebus cry!
Java's embedded documentation [...]
Oh, yeah, too bad the perl coders couldn't come up with something like that years before java even existed! Come to think of it, I think the perl guys borrowed it from lisp! Oh well, it's clearly an advantage of Java and of no other language!
And the best part about using java? It's low-level C/C++-like syntax and data structures means that you get to write many times more lines of code than you would need to to code the equivalent in tcl or perl or python. Why is that good? More money for programmers to write and (especially) to maintain all that extra code!
Java, with the support costs of a low level language, the run-time overheads of a high-level one, and the benefits of neither, is clearly the best choice. Just try it, and you'll be sayin', "Wow! I gotta get me some o' dat!"
Whoops, sorry, was I waxing sarcastic again?
Oh yeah, and all three of those other languages I mentioned have all settled on a single cross-platform GUI toolkit to share (Tk). How many GUI toolkits are fighting for dominance in the java world these days? I stopped counting after three. Boy, that there's some good standardization!
Aaaanyway, I don't want to bash java too hard. I actually think it's a pretty decent language overall. I just get so tired of people who think it's God's Gift; people who usually don't have a clue what else is out there. Java's ok, but it ain't All That!
The philosophy of Java is, that if you need 64 bit precision, use a datatype that uses 64 bits. IMO, it is a great advantage of Java that the primitives are declared so precisely.
It sure beats the "how large is an int exactly" mess you get in c/c++.
How long did it takes most linux programs to become 64 bit clean? This was never a problem for Java apps.
If only I could come up with a good sig
-download your 500 kb Java app
-try to run it
Doesn't work? Then perhaps native code has some advantages.
Why shouldn't it work? Why should size of the binary have any relevance?
You upgrade your JRE and half the features in your Java App stop working.
I you could give an example of where half the features (or indeed, any significant features) in
a java app stop working when a JRE is upgraded then I might consider this a useful comment. Of course this doesn't happen. I'm not saying that nothing ever changes in an JRE upgrade, but for virtually all apps, it makes no difference. Even huge systems like Eclipse run perfectly well on the 1.3, 1.4 and 1.5 versions of Java.
I totally disagree that Java has absolutely no aspects of a beautiful/easy-to-use language. I think you're neglecting the fact that when Java burst on the scene in '95, it provided a simple means to write cross platform applications in a way C/C++ did not out of the box.
I worked on a satellite system for NASA written in C++ that was originally spec'd to work on five UNIX platforms. Keep in mind this is in the days before Linux became widely adopted... and this system was a major headache because:
This is not to slam C++ in its current incarnation, but to point out that when Java first arrived on the scene, the restrictions and smaller set of APIs made it easy to ramp up developers who could then build cross-platform applications much quicker.
As for your specificpoints, let me explain where I disagree:
-primitive types and associated classes: When I want to store a variable of one the primitve types like int (the ones you use in every class) you have to wrap them into a class (Integer) which has no way to change the Value later. So everytime I want to e.g. increment a counter stored this way, I have to convert it back to int, increment it und create a new Integer-Object to store the incremented value back into my container-class.
Primitive types are (IMHO) a bit of a hack in Java, but they behave much like primitive types in C++. Granted, lacking generics (pre-Java 1.5), Java cannot support arbitrary collections of primitives, but consider this: if you want to store and manage collections of primitive types, couldn't you write your own class to either "wrap" the primitive type? I'd also recommend wrapping the Collection you're using to simplify the mutators.
-If I want to compare two Classes I have to use the equals-Method instead of a simple operator-overloading which would enable me to use ==
I can't count how many times I ran into incompatibly defined flavors of operator overloading in "mediocre" C++ code where bugs in operator overloading introduced logic errors that were hard to find.
Inn the case of equals(Object) versus the == operator, consider this: in Java they have two completely different purposes. If you want to compare two object references to see if they refer to the same object, use ==. If you want to compare the contents of the objects they refer to, use equals(Object). Consider the ambiguity and potential for flaws when the operator's behavior could be changed to deviate from comparing references to Objects!
This is a case where I believe that removing a feature from a language makes it easier for developers to avoid dealing with obscure bugs while trying to get an application done.
-When I retrieve an Object from a Container it is a java.lang.Object instead of the type I stored which totally negates the advantages of static typing Solved in Java 1.5 with Gener
Sun have made the API licensing of Java so developer-friendly that it makes the life of the API implementors hell.
For example - I've implemented a servlet container, but in order to get the test kit for it, I had to sign a contract guarding the contents of the license - I can't tell you how draconian the conditions are, because the conditions themselves are protected.
Sun have pulled off the PR dream scenario - screw over a minority that helps them (the implementors), gag them so tightly they tell you everything is alright, and everyone still sees Sun as the champion of the little guy.
The goals they seek (API compliance) could *easily* be achieved through more positive methods. If they want API compliance, why don't they just make the compatibility test kits so easy to get/use that anyone who downloads a non-compliant implementation of a sun api will hae the chance to know it before installation - kind of like how most GNU stuff uses "make test". It's certainly a lot better than forcing open-source implementors to sign conditions so harsh it could personally bankrupt them if Sun decided they wanted to.
Servlet v2.4 container in a single 161KB jar file ? Try Winstone
What's the difference?
You need a UT framework for all your code anyhow, if it is going to run correctly and not just run safely, so what's the difference if its a compilation error, or a UT run error?
And what a shame that would be, all those CPU cycles currently going to the JVM and wrapper classes would have to do something practactical instead.
And/or for that matter, post something funny/insightful as an AC? It blows the mind.
Well.. this sort of question will lead to the following answers:
1. I don't use Java because my machine is too slow, I don't like applets, or perhaps they use one Java app and say its ok. (These answers are from people who didn't read and understand the question.)
2. I like Java == Coffee! (These answers are from people who did read it, but were being funny.. thats good..)
3. I don't see Java used in the enterprise at all. We run a pure win32 shop and block Java at the firewall. In fact, we only drink tea to ensure we are not contaminated. (These answers are from a software company in Washington state mainly.. with a few other unfortunate exceptions as well.)
4. We use Java in the enterprise. (These answers are from people who actually work in an enterprise.)
A definition.. the enterprise does not mean your home network.. your school lab.. sourceforge.. freshmeat.. the internet cafe that you swap sysadmin services for free scones.. it means large corporate systems and infrastructures.
I haven't seen any enterprise-class system *not* oriented towards Java in a long time. Even ones not build in a J2EE model have evolved over time to support many of those components to streamline integration and development. Java has a good solid foundation in these areas, and with newer versions of the J2SE/J2EE specifications, it gets to be a richer server and client platform.
As far as Java on Linux.. I think the question should be more focused on the adoption of Linux as opposed to Java. Many places I work run many Java applications, but have requirements that Unix-hosted systems and applications must live on Sun Solaris, IBM, or other platforms. These requirements simplify management, accountability, and vendor management. That is worth a lot. Getting that Linux box online is cheaper when compared to that Sparc box, but the lifetime of supporting and maintaining the box could be higher if you are already supporting a large Sun infrastructure. This is all irrespective of Java.
Probably one of the biggest deals for Linux in the enterprise is Oracle's push and support of Linux for their entire suite of applications, and for publishing effective case stories on horizontal scaling on Linux systems. This benefits Java, as that is the primary language in Oracle-land now, but its a bigger benefit to Linux. IBM's push for Linux and Java is also very effective... (I rate Oracle higher, since they don't have a hardware issue to bring to the table, and are just pushing software.. IBM does push the software in the Websphere suite, but tends to bring hardware as well..)
So.. Linux is gaining in enterprise acceptance.. therefore Java on Linux is gaining.. but I think Java is set and has proven itself. Its Linux that is doing the proving now.
You upgrade to a 64-bit processor. Does your executable automatically run 64-bit with optimisation?
No, it runs in native 32-bit code instead of being emulated in an optimised JVM that makes it only five or ten times slower than native code.
Not to defend C++ (that'd be like defending smallpox or herpes), but that's a silly argument.
Sure, there's lots of Java out there, and it all seems to work fine on Linux. Except for Pogo.com, whose games insist that I don't have Java installed.
And yes, it's really Java, not JavaScript.
Anyone know which of several jre's or jdk's will work? The Pogo folks don't seem to want to provide an answer.
I'm running Fedora Core 2 with Mozilla 1.6.
And if Mono's libraries are as comprehensive and well designed (haven't fully investigated yet), I'll use that.
:)
Maybe it's just me, but Java "feels" like the cleanest language around: strong types, immutable strings, very clear inheritance rules, no direct access to memory, no "shortcut" confusionisms (ala Perl)... and, OF COURSE, a way to throw all that out the window if there's a need.
Retired from software... maybe. Sort of.
Just as has happened with those other highly portable, standardized, cross-platform languages like Tcl/Tk, Perl, Python, etc. (Oh wait, I forgot, there are no other portable, standardized, cross-platform languages, my mistake.)
Enlightened script languages, I would say.
And the best part about using java? It's low-level C/C++-like syntax and data structures means that you get to write many times more lines of code than you would need to to code the equivalent in tcl or perl or python. Why is that good? More money for programmers to write and (especially) to maintain all that extra code!
Yes, the best part. All this extra code allows the programs to be clearer, better organized... Maybe you're also one of the people who find java crappy because it forces you to catch exceptions ?
Oh yeah, and all three of those other languages I mentioned have all settled on a single cross-platform GUI toolkit to share (Tk). How many GUI toolkits are fighting for dominance in the java world these days? I stopped counting after three. Boy, that there's some good standardization!
Uhm ? For tcl only... I can name Perl/tk, perl/gtk...
And as of Java ? Except for crappy OSS projects, Swing and AWT only are used.
people who usually don't have a clue what else is out there.
Maybe you ?
I followed the live webcast and I would have to disagree with Lawrence Lessig on his point. His premise that Java is not being adopted by the Linux community because it's not OSS is not based on any figures and was one of the weakest stances in the debate (together with the Sun guy arguing against Open Source Java because it would make the VM not as stable as it is now). However, when I look around I see Linux and Java together everywhere! I personally use Java daily in the form of Tomcat and Eclipse. Actually, our company is deploying Java on Linux at all our customers. Most of the development team is also standardizing on Eclipse. So at least from where I'm standing at Linux and Java are quite happy together and being very productive too...
As for releasing Java under OSS, I'm all for it. I only have to look at the Apache Jakarta community for an excellent example of how (Java) technology thrives under OSS
-adnans
"In short: just say NO TO DRUGS, and maybe you won't end up like the Hurd people." --Linus Torvalds
The most in webservices is the Perl and PDp
And you info comes exactly from where?
"I think this line is mostly filler"
Yes, you're right, "Java" is a buzzword. Much like "The Internet" and "Color TV"...
what exactly can C,perl,python etc etc do that asssembly cannot ?
Then why are there other languages than assembly ?
Azureus bittorrent client is cool, runs fast, has a graphical interface and is coded in Java.
I desinstalled bittorrent after tried it.
"I think this line is mostly filler"
bash: java: command not found
Java is installed on 60-70% of all new PCs, and is available as a free download on almost every platform.
With a runtime the size of JRE 1.4+, there's little advantage over shipping your compiler with your package
You are confusing compiler with runtime. The JRE1.4+ runtime is just over 10mb. And, hey, you need to install it once for all java apps.
What is the
What you're missing is that the JVM, in its quest for ultimate portability, defines a fixed 32-bit size for your common integer type. Meaning that java applications do not take advantage of 64 bit precision on 64 bit machines.
These are a set of statements that don't relate.
Java, for compatibility, keeps the size of byte as 8 bits. Does this mean it can't take advantage of 64 bit processors? Of course not. There are ways to optimize all memory access with 64-bit moves as against 32-bit moves, and of course Java longs are
64-bit and Java doubles are 64-bit. The JVM can even recognise specific processors and make use of specific register sets to optimise code. All this is done at run time with no effort required from the developer.
Of course, if you want to personally keep and manage dozens of finely-tuned binaries for different versions of Intel 32-bit, 64-bit, MMX and AMD, that's up to you.
No other languages come even close to these numbers, although I still have some hope for the future of Euler. Actually I don't, just kidding ;-)
And what a shame that would be, all those CPU cycles currently going to the JVM ..
what are you talking about? the jvm is just a program like any other. What 'wrapper classes'? if you read recent slashdot articles you should have noticed that java is fast.
JVMs dont magically eat up cpu cycles or memory. Java can run on small embedded systems and mobile phones.
No, it runs in native 32-bit code instead of being emulated in an optimised JVM that makes it only five or ten times slower than native code.
*sigh* This is nonsense. Its been nonsense for years. For goodness sake, keep up to date. Java is now comparable to C++ speed. Just look back at recent Slashdot articles.
There may be lots of java projects listed on sourceforge but I can't say I have ever downloaded and used any of them except freenet and i2p and they both have their share of java-induced problems. I regularly download software from sourceforge and other open source project sites but it is almost always C or python or perl or something. Are there any java killer apps? I've heard jakarta and tomcat and jboss are popular but they would seem to be rather niche applications, I've certainly never had a use for them nor do I know anyone who uses them although I occasionally see someone on /. or elsewhere mention them. It would seem that java is mainly used server-side. Why is that? For what reason is it not desireable for client applications? I have my own ideas but I would like to know what others think.
Now that's what I call comedy!
What are those deprecated classes and methods, then? Even things as simple as date and time classes and InputStreams were hacked in, then deprecated and replaced. Then there's the SAX parser, which was replaced with a totally different API...
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
At my company, we started building a new product on RH9 using Sun's
JDK 1.4.2. This worked fine through development and functional
testing. But once we started doing stress testing and scalability
testing, things got difficult.
First we hit the infamous LD_ASSUME_KERNEL problem. The JVM would
freeze up mysteriously on innocuous statements such as "count =
0". This happened in synchronized method, and the more threads there
were, the more frequently we'd hit this problem.
Then we discovered that the Sun JDKs management of memory in
conjunction with nio classes was not so good. Memory usage as reported
by Java was fine, no leaks, and then all of a sudden we'd die with an
OutOfMemoryError.
IBMs implementation seems to be of higher quality on Linux, and that's
what we're now using.
Having gone through all this, I'm still glad that we're on Java. It's
a very nice language, performance is more than adequate (for our
application anyway), the libraries are excellent, the tools are
excellent, and I'm happy not to be dealing with memory corruption
issues.
P
-- My dog can beat up your dog.
( And what can assembly do that you cannot do by screaming binary code into a microphone? :-) )
I like Java for its platform independency, and for how fast I can create a working application, but most of all I really like the API documentation! It's so accessible and comprehensible that I have never felt the need to buy a single Java book. Everything I want to know how to do in Java I can find out in a matter of minutes by browsing the API.
I am proficient in C, C++, Python, O'Caml and even Visual Basic, but I use Java whenever I can get away with it.
``It may take time to get features in through the JCP, but it also ensures there are no hastily implemented hacks making their way into the system.''
/pedantic
However, these hacks do clean up. Virtually all influential OSS projects emphasize elegance of the code. On the other hand, the Java "we'll design everything into the language and make sure it's good approach" reminds me very much of Ada and C++, and can already be seen to a language that is 1) so bulky it's a monumental task to implement the full spec
2) inflexible; the designers assume everything will be in there, so no need for macros, etc. The result is that the language _can't_ accomodate everything
3) slow to adapt to Real World requirements
``Quite frankly, the vast majority of OSS projects which don't come from Linus, Apache, Mozilla, or IBM have proven to be an absolutely disgusting mess of poorly and un-documented code.''
Oh yeah. I agree with that. And what about the Java source code? Is that any better? I don't know, and I don't think you do, cause it's closed source. Besides the vast amount of crappy OSS, there is also a massive amount of good code, and improvements are being made accross the board.
``OSS means no sanity checks on feature creep, portability verification, documentation verification, regression testing, and all the other enterprise-project aspects of development that make it a useful technology.''
What makes you think that? The OSS community has a strong preference for elegance, as opposed to the closed source world, where creeping featurism seems to be the standard. OSS tends to be more portable, too. Documentation is an issue, but it hasn't been getting in _my_ way very much, so I would imagine the same goes for others. Verification and testing, I think that OSS definitely has more potential there. If that potential is not being exploited, that seems a matter of choice rather than necessity.
``I've lost track of the number of times I've encountered platform-specific hacks in OSS code that weren't properly #ifdef-bracketed, or which just completely incompatible with other O/S implementations.''
And in Java, you can't even #ifdef at all; all platform specific code is going to be compiled in on every other platform. Incompatibility with other platforms is caused mainly by the lack of support for standards that _do_ exist. It's kind of like using Cocoa or win32 interfaces in Java. The good news is that, in OSS, these things can actually be fixed, and they will be, if the software becomes desirable enough.
I have to say that I think your post was a very bad one, with nearly all your arguments flying back in your face. Please be a bit more thoughtful in the future. That goes for the moderators, too.
Please correct me if I got my facts wrong.
In our current project we use Java. This is a big project with possible thousands of server, tens of thousands client installation. Platform portability was not our main concern, but it is a bonus. open source tools are very good in java. there are aproximately 20-30 open source libraries we are using, but not the GPL ones. Apache, BSD types mainly. Some are: Tomcat Hibernate and related libraries Spring Lucene Webwork Hessian Apache commons Dom4j Log4j Velocity some codehaus apps. i prefer java anywhere. because it is strong, has many open source libraries and easier to use.
I don't read slashdot to learn if Java is fast, I run Java applications and applets to learn if Java is fast. And, well, it isn't. What's fast is modern processors: you can't buy a slow desktop computer any more, and you can hardly even buy a slow handheld. Java is reasonably slick on the desktop because you've got cycles to burn... but it's not fast, nor efficient, not small.
And while that doesn't matter that much on the desktop any more, it sure as heck matters on servers.
I'm currently using an 8 year old Mac with a processor upgrade that brings it up to parity with 1999-2000 iMacs, and an obsolete-in-2002 video card. It's *still* got CPU cycles to burn on translucent windows and animations and 24-bit hi-res desktops with screen savers running in full-screen on a layer between the windows and the background. But it's barely got the CPU cycles to spend on Java... Java applications are noticably slower, not *very* much slower, not enough to make me go "OK, I'm not using Java", but enough to see.
So, hey, I can see how someone with a modern computer sees Java on the desktop as fast.
BUT...
On the server, things are different. CPU time still matters, because you're sharing that CPU time between thousands of browsers. Consider, if you like, a parallel with another web technoilogy: on the desktop, it doesn't matter if an applet is written as a shell script that forks and execs a dozen programs before it's done, but on the server side that overhead is killer... which is why people have been avoiding CGI in droves.
So, JVMs don't "magically" use up CPU cycles or memory. They do it conventionally, unmystically, and systematically.
Oh, and "one more thing": They *do* run on embedded systems and phones... using stripped down class libraries, and still I quit using Java technology apps on my Palm and deleted the VM, because it was slow enough *there* to be annoying.
``how many Slashdotters are also Java users?''
42
Please correct me if I got my facts wrong.
Um, and SWT. You forgot SWT.
And Swing is built on AWT, so you don't need to double count em.
"You know you want me baby!" - Crow T Robot
You're right, as a client side web technology, Java suck badly. On the server side OTOH, java is King.
You should read the post above your own (by elemur). It sumarizes the sutuation pretty well. (You're in the first category btw..)
The real value of java is actually the ability to write quick (and thereby cheap) solutions to massive coding challenges.
If Java is comparable to C++ speed, then that C++ code is doing something wrong, or C++ can be a lot slower than I ever imagined.
"look back at recent Slashdot articles"?
Ah, an unimpeachable source.
why don't distros, especially desktop ones, make java use a gtk or qt look 'n' feel as the default instead of the crappy java one? i think it's a reason why people don't use it as much. they see how crappy it looks and disregard it. windows and mac os x users don't notice that much of a difference when using the apps because the java apps have the same look 'n' feel as their other apps. java isn't slow. it may be a bit of a memory hog and it may take a few seconds to start a java app but so do alot of apps built with c++ like openoffice.org and mozilla
Enlightened script languages, I would say.
Technically, you're wrong; they're byte-compiled (except maybe tcl). But I understand what you mean. But so what? They're pretty damn enlightened! Check out, e.g., Zope before you sneer at python.
All this extra code allows the programs to be clearer, better organized.
By that logic, assembly language programs must be the clearest and best organized programs of all.
> people who usually don't have a clue what else is out there.
Maybe you?
Well, in nearly 25 years as a professional software developer, I have used (off the top of my head) assembler, basic, C, C++, forth, java, lisp, pascal, perl, python, shell and tcl, and dabbled in ADA, APL, eiffel, prolog, ruby, smalltalk, snobol and more. The biggest gap in my education is probably the functional languages like OCaml and Haskell. I think I have at least a bit of an idea what's out there. How 'bout you?
Actually, Slackware 10 does not ship with Sun's JDK.
Java is used all across the Linux community !! It is used everywhere !! Why you ask ? Because it is universally compatible. If I were to write an application for a company with a mixed Win\Linux environment, Java would be the soloution. C can be used, however you have to worry about cross OS compatibility.
about the possible merits of open-sourcing Java vs the market's demand for continuing compatibility
...), several incompatible 3D APIs, incompatible and incomplete implementations (Sun's, gcj, etc.), several incompatible levels (J2SE, J2ME, J2EE, ...), and on and on. Even among Java implementations based on Sun's code, there are wild incompatibilities. C# and Mono are futher incompatible branches off the Java tree. Open sourcing Java could have reduced those incompatibilities because people wouldn't have had to reinvent the wheel just in order to get around Sun's licensing restrictions; something like Swing, for example, would have died its well-deserved death early on, instead of being kept alive artificially by Sun.
That phrasing suggests that open sourcing would have threatened compatibility, but the exact opposite would have been the case: under Sun's processes, Java has fallen apart: several different toolkits (AWT, Swing, SWT,
Of course, why any of this is worth worrying about anymore, I don't understand. Java has failed on all its promises: its promise to become a platform-independent way of delivering applications via the Internet, its promise of becoming a universal client development language, and even its promise of becoming a good server-side development language. Java hangs on in education, but as Pascal shows, that doesn't mean much. And some big corporations with too much money still try to use Java for "enterprise systems", but you can sell those guys anything.
but it's not fast, nor efficient, not small.
I think this is because you are basing your experience on Java GUI apps, which have really let Java down. The way Swing was implemented was a big mistake, but thank goodness that is not used that much these days. Try SWT, and see Java run fast.
but on the server side that overhead is killer..
That is Why Java is so widely used server side. That is why Java is so finely tuned in terms of multithreading and multiprocessing. Server-side developers aren't crazy - they use Java because its a damn good way to implement programs that handle those thousands of threads and requests per second.
Its FAST.
Palm and deleted the VM, because it was slow enough *there* to be annoying.
Most Java VMs on Palm only run as interpreters, not JIT compilers. That's why it is slow, unfortunately.
If Java is comparable to C++ speed, then that C++ code is doing something wrong, or C++ can be a lot slower than I ever imagined.
Whatever. This is statement of opinion, not fact.
Write some comparable code, and try it.
"look back at recent Slashdot articles"?
There is a core of anti-Java bias on Slashdot. I assumed that if I pointed back to a Slashdot article that demonstrated Java speed, I might make some progress in countering that bias. However, there are, of course, plenty of independent studies.
I can't see why can't you use some quicker language, like Python, Ruby or PHP...
-- Patent no.123456: A way to personalize
Have a look at your Linux installation. Do you even have a Java runtime installed? What are the dependencies when you try to remove them? Chances are good that, even if you happen to have a Java runtime installed, you can remove it without losing any functionality you use. Compare that with, say, Perl.
Unless you have a rather unusual and specific need (Tomcat, JSP, Java homework problems, you probably will never need Java on your Linux system.
It's true that people have started a lot of projects in Java: there has been a huge flurry of "X-in-Java", where "X" is any existing piece of software, but few of those projects have been successful. And most Java projects that have yielded something useful are just Java projects to produce tools for Java programming, rather than anything any normal user might want to use.
Pretty much, for me, Java's promises have been delivered by the linux kernel, as a whole, pitched with whatever stuff i can roll with it. Write "once, run on anything" is as much about build tools as it is JIT-interpreters.
And I've always had a bit of a thing for C. The 7 or 8 Java projects I've been involved in were -fun- from a programming perspective, but it still feels like a cocktail language that gives itself its own reasons for existence.
I don't really think its safe to say that about C, which is fundamentally still 'just another assembly language'.
Complete kernel and libkits assembled with sharp C
Java was a good lesson, and still is. It is a productive language. But this can be said of any language and its use in an application framework, really, and for me, the vmlinuz+/libs+/bin subsystem does what Java promises.
; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
...some of our clients want real-time chat facilities on their sites (a bit like the liverperson support system), we provide this using a custom built Java chat server.
Now that we've got proper Non Blocking I/O and you don't need a thread for every connection (or to implement your own multiplexor with JNI) the memory usage of our server app has come down considerably.
Looking at the latest stats on my performance monitor it's currently dealing with 463 concurrent connections and using roughly 70 megs of memory, which on a server with 2 gigs is nothing.
I am NaN
I actually double counted them because some stuff are quite redundant (ie Panel vs JPanel), not because they are independent.
Speaking of Apache's work in Java: the ASF's real concern is not an open source Java, but the ability to write open source implementation of the various specifications (JSR's). See: http://www.intencha.com/adrian/000167.php for a good blog entry on this.
Who said Freedom was Fair?
By that logic, assembly language programs must be the clearest and best organized programs of all.
That's not what I meant, but I think you know it. I mean that features such as strong typing, mandatory exception handling, encouraging good organisation of the source provide much more readable code.
My experience in third-world countries is that developers are more likely to develop for an open and/or cross-platform architecture than in developed countries. In that sense I've noticed that most Linux development occurs with Java (and to some extend PHP). Another pattern I noticed is that many developers use Windows to develop Java apps and then they deploy them in Linux.
My last 4 enterprise apps were developed on Java on Windows, and deployed to Java on Linux. Slick. Thats my fav development/deployment environment. I love it.
You argue: It takes too much resources!
I answer: So what! I have to quickly build enterprise apps that have to be rich in functionality and be scalable. Project costs are affected far more by time to develop, and developer costs are far higher than hardware. Makes no diff to me if I have to spend a few thousand dollars to get more RAM, faster CPUs etc. My project still completes sooner and is more robust than it otherwise would be.
Works for me!
Thanks,
naeem
I use Java for Eclipse, so I can develop Perl in a nice IDE. That's just about it.
How appropriate. You fight like a cow.
Lots of Java on my Linux desktop. Most UML tools are written in Java...
In context, that generates a number of ratios. One ratio is verbosity vs user-standpoint performance, or execution speed. Agreed, the JVM's may have come a long way in the last few years (or not) but first impressions stick and even though Java is a derivative of Objective-C, it is VM'ed rather than native-machine compiled so it has some inherent disadvantages. Perl, Python, Jython or even Javascript have better ratios, in this regard, even though they are all based on VMs. C++ is somewhat more extreme and in the case of C the performance penalty is even greater due to all the work that has gone into optimizing compilers for that langauge.
Learn ratios -- they're really useful. They can give you rationality.
Seastead this.
I actually really liked Java when it was new and was a big advocate. But when it became clear that Sun was "controlling" the language and it's wasn't open then I quit using it.
Popularity is for politicians. Performance is for the poor suckers they tax.
Seastead this.
i've been wondering about this. in order to ship java with a distro, do you have to pay sun some money or do you simply have to flash the EULA on the screen and tell the user to "Accept" to install?
Java has its fingers in almost every type of automated technology, from xml to web services to graphics to databases to GUIs to web. There is really good code out there that will cover all of those bases, a lot of it is free.
Project startup time is fast It seems to take less time to get a java project up and running. We don't have to worry about buying software and becoming a MS Certified partner so we can get discounts. Just download stuff and go. Sure project tools can get complicated in java, but most of my clients always opt for the simple approach (ant, maven, eclipse).
Less Restrictions I'm not saying java is 100% platform independent. But it does lend itself to less trouble than say, worrying about what version of MS Server will run both our new .NET apps and our old ASP pages and won't F#ck the registry between the 2. If I develop a JBoss or Tomcat app, I can develop it on Windows XP and deploy it on a Linux or Solaris server.
A huge user community! Java has a huge user community and since many are "open source centered", the tend to be very willing to help with an error message or a config problem. Several people in the Jakarta community do nothing but respond to mailing lists.
Speed is becoming less of an issue I admit, the first java was slower that anything... but they have put a lot of effort into correcting those problems and the new releases benchmark close to even c++ in most areas except trig functions. With process speeds and cheap memory this is less and less a problem.
I'm not saying java is the last language you will ever have to use... but in my opinion the benefits out-way the downfalls. If it saves money and time... then thats longer my boss can afford to pay me!
Quicker in what sense?
If you're just doing some "light" server side scripting, then one of these are probably a better choice than Java. I'm not a huge fan of jsp myself...
If you're doing something more complex, you get a lot of stuff for free with Java: Infrastructure stuff like application servers, libraries (jakarta...) and development tools. Do python, ruby or php have something comparable to j2ee?
Does Java have an equivalent to Python's eval()?
0 6
in Python
>>>from math import *
>>>x = 7
>>>function = "sin(x)"
>>>eval(function)
>>>0.656986598718789
That is, is there a Java function that will accept a mathematical expression in a variable and evaluate that expression for a guven value of that variable?
Note: for those of you playing this at home, set your calculator's angle mode to radians.
I was there during that keynote, and his statement was that it was heavily used under Linux, NOT the MOST heavily used.
Heck, even when we tried to performance tune the application, we wound up with gobs and gobs of #pragma directives and custom code to either work around bugs in a target platform, or just improve performance (for example, by aligning data structures to specific address boundaries).
How is this made easier in Java? Do you mean that Java magically makes said platform-performance issues go away?
Java just makes it easier to develop. Many problems are still there, only now unsolvable that is easily (?) fixed by a #ifdef
Not a single method that has been deprecated has been removed.
:)
Maybe, but at least one has (intentionally) stopped working. System.getenv(String) used to return the value of an evironment variable, but will in java 1.4 always throw an exception. The reason is that it is "not platform independent enough". Due to a lot of protests, they are puting it back in 1.5.
I agree with everything else you said in your post, though
Pollix, a Knoppix (Debian live linux CD) derivative with Java development tools like Eclipse, Netbeans, BlueJ, JGrasp, JSwat.
See also 300+ open-source Java components.
Your problem is entirely with Debian's approach to Java.
.bin files that you get from java.sun.com.
I develop and assist in maintaining over 100 Debian systems at work. The debian packaging tools are fantastic. Tack on a few small scripts, and you could expend very little effort on maintaing hundreds of machines.
Until you get into Java, which just about every enterprise is. If you're serious about it, you drop almost everything that the Debian project does w.r.t java, and add the following to your sources.list file:
deb http://z42.de debian/
deb-src http://z42.de debian/
Get j2se-package, which nicely builds sun-j2sdk1.x and sun-j2re1.x packages out of the Java
You then throw these packaged into your in-house repository. Redistribution of a modified JRE or SDK (like a Debian package) is prohibited by Sun's current licensing terms.
You then might want to rebuild any Debian java packages for your repository using Sun's Java, and not Kaffe or any other hacks. When developer's complain that certain classes aren't working, answering 'but there isn't a DFSG compliant jvm that will support them' is generally not the way to promote harmony at the office, or to guard your job security. RMS disagrees with this, as per his article on 'The Java Trap', but I work in a world of reasonable compromise.
Of course, being a serious enterprise user of Debian, your in-house repository will contain a heck of a lot more packages that Java. Probably because you're running Debian/stable, with a volley of backports to support more recent versions of certain packages. OpenLDAP 2.1, MailScanner, SpamAssassin, and Apache2 come to mind.
I love Debian, I just hope that the bickering over the latest version of the DFSG doesn't draw developers away, or critically delay the release of Sarge.
Did you know that the new DFSG _should_ require many standard packages exit the main distribution and enter non-free? We're talking anything MPL'ed, APL'ed, potentially reiserfs(*), and if a few posters on debian-legal and debian-devel were to be believed, even GPL'ed code (the pre-amble).
(*)Because of the mkfs.reiserfs advertisement - you get an amazing filesystem for _nothing_, yet you complain because the funding agencies are shown while mkfs is running? Get real.)
Sure Java is used lots on Linux, but that's not the point.
The point is to imagine how much more Java would be used with Linux if Sun had opened it.
If Sun had opened Java at the beginning then it would have become very much part of Linux. Java would probably even be part of Gnome and maybe part of KDE. You could call this fragmentation because many of these programs would be written to Gnome/KDE API's, but these are programs that can't be portable anyway.
I believe that both Linux and Java would have benefitted hugely in this scenario, but not Solaris and maybe not Sun. And I guess that's the problem with technologies that aren't open: Java is managed for the benefit of Sun, not for the benefit of Java or Linux (if it were otherwise the shareholders would have a thing to say about it).
If Java has done anything, it is trying to stay backward compatible too long.
I'll second that... you do hear about very minor incompatibilities with very complex apps, due mostly to new bugs or old bugs fixed, but I'm still amazed at the lengths they go to keeping compatible with previous releases.
I have a bunch of applets that, until recently, still used the PRE-JAVA-1.1 EVENT MODEL. That's right, back in Java 1.0.2 when we didn't have ActionListeners and so on yet, and events were propagated up to the parent container. It was ugly, and non-scalable, and they STILL support it in the 1.4 JRE, 6-7 years later.
There are only 10 types of people: those who understand decimal, those who don't, and, uh, 8 other types I forget.
I'm a digital artist working mainly on real-time multimedia applications. My language path has been BASIC, Pascal, C, Assembly, C++, and finally Java. I've written 2 real-time demos (as in the demoscene's demo) in C/C++/asm, but now I use Java exclusively, for the past 5 years. I've never looked back ever since. There're occasional needs for JNI wrappers for native libraries, but Java gives me much more than I can ever ask of C++. The stuff on my website will prove that I'm not bluffing. Yes Java is not perfect, but it is a great evolution. So you can hear it from me: I'm grateful for Java.
www.rexguo.com - Technologist + Designer
So who was right, how many Slashdotters are also Java users?
Slashdot editors, in future please accompany such articles with a Slashdot poll.
that I worked for, Linux would not have been used had it not been for Java. The ability to run Java apps on Linux casued the firms to move all their enterprise servers from Solaris/Windows to Linux. Only the database runs on Solaris.
Most linux boxes today are working as web/application servers.
Most enterprise apps these days are being written entirely in java/jsp and using web services. The only notable exception to this is the microsoft small business market which uses stuff like IIS/ASP.
So yeah, java on linux makes perfect sense in the business programming world, although not in the way most linux geeks think of programming (desktop).
You get 90% of the prettyness of a windows app, lower memory and cpu requirements, no deployment costs, no upgrade costs beyond developing the upgrade and both the platform and the language are free. Obviously, using something like websphere costs money, but that is optional.
J#
The Kruger Dunning explains most post on
I've got a question for you, since you seem to like JIT so much...
Why the hell doesn't Java cache the compiled code between program executions? Program portability is nice, but 98% of us desktop users install an app and only run the installed app on a single hardware system. After the first time JIT compilation occurs, every subsequent JIT is a waste until some hardware parameter changes that would affect performance. Would it really be that hard to have a system-wide cache that the JVM could check when I run Ant so it wouldn't have to JIT it every time?
Karma: Contrapositive
Performance tuning in java is about finding bottlenecs in your logic, not programming to specific platforms. The JIT compiler does a good job of optimizing for each platform it runs on.
Open Source Java DAO Generator
c# and .net are ecma standards. There may be some question as to the use of cerrian librarys ( winforms, ect), but they have never purchansed any kind of license from microsoft. Nice Fud, though.
Well.. maybe. Or Maybe not. But Definitely not sort of.
Different language for sure. However, the specification for C++ requires backward compatibility with C.
Thus C is C++ but, C++ is not C.
----- If communism is a system where the government owns business, what do you call a system where business owns govern
Oh, I don't dislike Java because of slashdot. I dislike Java because it's sidetracked the development of real object oriented languages the same way C++ has. Both of them have this hard unyeilding non-OO core that shouldn't be there, and that forces you to waste time (human and programmer) creating overlaid class libraries that hide it... and add additional layers of method calls that can't be optimised away.
This isn't much of a shameless plug (since there aren't many music theory teachers on /.)... but anyway, I run a website that uses all Java on the back end -- Apache Struts/JSPs -- and Java applets (w/ AWT) on the front end.
It works... server-side, Java is great, and I use it for bigger contract projects where I can test on w2k and deploy and iSeries or Solaris. Client-side, it's not headache-free, but it's been my best option so far. The applets are limited to Java 1.1 functionality, since most users just have the bundled MS JRE. But they run fine on Mac, Linux, etc..
The cross-platform aspect was one of the biggest sells for me -- I develop mostly on win2k, deploy on a Linux server. The second big sell -- no investment in software! Eclipse, Tomcat, Struts, the JDK... all of this stuff is open source or free for me to use.
No, I'm not a pure-java nut, either... I'm using PHP for a forum I'm setting up on my site, just because open source PHP forum options are much better than what I've seen in Java.
BTW - there's another Java GUI toolkit I've been playing with lately that's a nice alternative to AWT (yes, it's bad that there are so many imperfect alternatives... you learn to deal). If you need a nice-looking, very lightweight GUI that only needs Java 1.1 to work, try Thinlets (LGPL). You can build your GUI in code, or (the better way) by parsing an XML file (the XUL model).
There are only 10 types of people: those who understand decimal, those who don't, and, uh, 8 other types I forget.
Actually, I see a lot of code that has ifdefs in java. I have no idea why you are suggesting that this horrible method of coding is not available.
Firstly, many java apps these days are built with "ant", which contains a java tokenizer for God's sake.. This performs search-replace on the java code for special tokens; often based around version of th e JVM currently compiling the code or sometimes even based on the platform.
There are apache commons tools which can ask questions like isWindows, isUnix, bla bla bla, and so you KNOW there is platform specific code running around the open-source community.
I use a java editor which is very specifically tied to a particular version of java; it will physically not run on any other version. Subsequent releases of the editor use newer version.. It's very frustrating, but thankfully it's very easy to install multiple versions of JVM's on the same machine.
Moroever, if what you want is that totally different code is rendered for different platforms, consider this. Java HATES switch statements; only integers can be applied and most everything in java is an object; (whereas in c/c++ most things are integers; easily fitting into a switch statement). Thus if you want a switch statement, the better design paradigm is to have a base class and subclass it for each switchable item. Then you choose the appropriate derived class (I personally perfer hash-table lookups).. The advantage is that ANY redundant code in the would-be switch statement can be refactored out and reused in the base class. It's more elegant design, often easier to read; provides smaller, more concise code, bla bla bla.
So obviously if you can ask the platform which environment it is, then you can choose subclasses which implement the platform specific material.. This is much more elegant than littered #ifdefs in the middle of a conditional of an if-statement.
The argument of #ifdef performance is moot in java, since you have run-time optimization.. If you have an if statement that can not possibly be true, the compiler removes it. Thus an ant pre-compiler, resolves the equivalent of ifdefs. However, the JVM itself is likely to determine constancy (generally due to a finally clause) and thereby compile-in or out even run-time configuration exclusions. The bane and bueaty of java is that you've outsourced performance to a JVM vendor.. jRock is fast but unstable (in my experience), while sun and IBM are pretty good all around.
As far as platform issues exist. Java is slightly better than perl at being cross platform neutral (though perl is catching up). These two I would consider to be the best all-around cross-platform languages.. Sure you have kiddy languages such as BASIC or pascal (or elegant ones such as lisp).. But these languages don't work well with their host OS.. They don't translate paths correctly for one. Nor do they even allow multi-threading as java perl does.
Java is not without it's flaws, to be sure.. And even the repairing of flaws have left an unsightly appendage of sorts. But once you get past memory / CPU requirements, Java is one of my favorite platforms
-Michael
My company uses Java a lot.
I use a Linux desktop, as does one other developer. We produce code fast and well, using Emacs, javac and a Tomcat instance locally.
The other developers produce hideous code and it takes them a long time. They're developing on an IDE on Windows.
Then we deploy all this stuff on WinNT/Win2000.
When I need to acomplish something on Linux, I use Perl. When I'm doing something for the company, I use Java. So Java on Linux, you bet.
BTW: I've been playing with Java 1.5 -- while purists might hate the arg list change, I'm singing in my cube. Thank GOODNESS. Finally!
Both of them have this hard unyeilding non-OO core that shouldn't be there, and that forces you to waste time (human and programmer) creating overlaid class libraries that hide it...
I agree - I used to love developing in Smalltalk - it was elegant and fun. The problem is that true full OO has unfortunately ever been really that popular, and languages (like Smalltalk) that provide this just don't measure up: years ago, I switched to Java because it was cross-platform at the binary level, free, and fast. No Smalltalk or other true OO language I researched could compete. Java is not perfect, but I believe it succeeded because it was a sufficient compromise to attract even hardened C coders, while providing reasonable OO.
and add additional layers of method calls that can't be optimised away.
I'm not too worried about this: method calls are very lightweight, and I believe that many can be in-lined and optimised away.
Java does fix many cross-platform performance problems by leaving the optimization up to the virtual machine, it's a similar to what Transmeta does. Some People are even claiming that Java programs are faster than programs written in C++. Less biased benchmarks still put the Java VM just a bit slower than GCC and a lot slower than a really optimized compiler(Intel's).
I've got a question for you, since you seem to like JIT so much.
Its not JIT that I like, its the HotSpot optimiser - it produces optimised code based on what is actually in need of optimising at run-time, rather than what a compiler guesses is in need of optimising at compile time.
Why the hell doesn't Java cache the compiled code between program executions?
Security. Java VMs validate classes and byte codes when they are loaded. Otherwise, someone could write garbage into the code cache, with exciting results.
The latest Java (5.0) does cache some system classes in order to significantly improve startup time.
You don't have to use JIT - if you want binaries compile your classes with GCJ. I haven't tried it, but I hear good things.
I must admit that I was never deeply into Java, but at one point I was a Java programmer for one simple reason:
... well, it's been many years. I occasionally consider Java...whenever I encounter gcj (or is it gjc?). And I consider Java superior to C in most ways, as a language. But I don't like Sun Java. File IO is too clumsy. I prefer Python, or Ruby, or D, or even Ada. (Ada strings are a real pain though. And the lack of a built in garbage collection system yields other language constructions that are...undesireable. Though they do handle problems that C doesn't even TRY to address.)
My company wouldn't buy me a C compiler. They didn't see why I wouldn't do everything in MSAccessBasic (which they paid for as part of the MSAccess database).
Since then things have changed. E.g., Python has become available, CygWin became useful. And then I switched to Linux.
If gcj were better documented (it's been awhile since I looked, so don't take this too seriously) I might consider it more often. Those with serious java intentions seem to find swt to be an acceptable approach. And I'm sure it's easy to link to C, but when I read the documentation it didn't go into any details. Probably a few words with someone who already knew how to do it would have clarified things, but I don't know any such person.
OTOH, D seems a much better language. It was missing a good Mac port when last I checked (there was one in early beta), but it seems to combine the best features of Java and C++ with many of those from C. But for what I'm doing now, a dynamic language (I appear to have selected Python) is a better choice. So now I'm hoping that Pyrex gets some serious development effort.
Java? I'll go back to it if it ever looks like a good choice. But usually what I see is a really clumsy way of doing some very interesting things. And the things can be done in other ways.
I think we've pushed this "anyone can grow up to be president" thing too far.
Most of the reponses I've read (have read all the 3 and 3+ ones), have been like:
1. Yeah, we're using java, but we won't talk about
the performance. We use it only for being a cross platform software.
2. Yeah, look at sf/freshmeat. There are a lot of projects.
3. Java doesn't have so and so feature
The debate, methinks, was about Java being in heavy usage on Linux. The reason, why something would be in heavy usage, is that, the particular software would out perform it's competitors (hopefully, by leaps and bounds), and Java has issues with performance. I'm not getting into Java Vs C++ performance here, but how many enterprise software apps are being used, which are written in Java.
Why is Java mainly used server-side? Because an awful lot of the clients are browsers. Plus, in those cases where the client isn't a browser, it doesn't matter so much if the client has a memory leak, or crashes frequently -- users are used to that these days.
Currently, I'm working on a system that does have a Java client (that runs on Linux), but that's been tasked to integrate into an existing .COM client -- but by using Java, we get to use Linux and OS X in our development, even if the target system has to be something that comes from Redmond. I wouldn't touch this project with a ten foot pole if it were in C or C++, as the .COM infection would creep thru the system.
Most of the work is therefore done server-side, in Java.
If Java wasn't here or disallowed, the whole project would probably be in a mixture of C++ and VisualBasic and chasing after .NET, and no unix of any flavor would be involved anywhere in the development cycle. As it is, those of us who use unix systems have been showing the Microsoft-centric developers how much more you can get done with a reasonable toolset and a (relatively) stable operating system.
Pick One: http://www-rohan.sdsu.edu/~stremler/sigs/sigs.html (Note - disable Javascript first!)
Fixed Length Arrays
It buggers the shit out of me trying to write [portable] crypto in C# because of that (and a few other things I'll bitch about later)The Geek in Black
I know my BCD's (when I'm Sober)
I'd just embed python.
:-)
Just kidding.
Actually, the Java solution to this problem looks a lot different. Given the need to execute unknown code, usually an interface is used and the objects are made to implement it. Then the object will always have method foo and you can pass your data that way.
Granted, that's a lot more work. There's not a lot of Java code that is shorter than it's Python equivalent....
Open Source java projects are rare. While the language might indeed be highly used in the Open Source community, sharing of finished products isn't.
Yes, I know there are some open Java projects out there, so don't bother listing them for me. My point is that for every open Java project there are several hundred using C or C++. Out of 250 package installed, the only Java application I have on my current desktop system is the JDK...
Don't blame me, I didn't vote for either of them!
Agreed. In the real world which is more likely to happen?
I just upgraded to a 64 bit processor. And my application...
A. Suddenly gives my the ability to have 2^64 documents open at the same time rather than the previous limit of 2^32 documents
or
B. Suddenly all of my custom, binary files won't open properly because some programmer hard coded "4" in all the places where an byte offset over an int was required in the file.
This is a language independent problem, a properly coded C++ app with the sizeof ops used correctly should work correctly, right? However, in java, an int is an int is an int on a cell phone or on a PC or on a mainframe. Use of int correctly is, thankfully, taken out of the programmer's hands.
P.S. I love C++ (templates are cool) and I love Java (I can get so much done). I wish I had a job where I could learn Haskell or OCaml and I'd probably love that too.
Waltz, nymph, for quick jigs vex Bud.
novell's groupwise client for linux is actually a crossplatform client written in java.
also, the administration tool for novell products (ConsoleOne) is written in java and runs under linux just fine.
-bk
First of all, I was programming in C and assembly language in the early 90's. Portability was a friggin nightmare. The idea of just taking a chunk of source code and plopping it into another compiler/assembler worked well in theory, but reality was a different story. The java system is such that one *CAN* take the same source code, plunk it down onto a completly different machine, architecture and OS and achieve the same functionality and results (within reason of course).
The ability to code on one platform and run your application on anything that there exists a java interpreter for is a wonderful thing. Especially with the upcoming Exodus from the Windows platform to Linux, there will be a big opportunity for java to close the gap on cross-platform solutions.
boycott slashdot February 10th - 17th check out: altSlashdot.org
I recently inherited a chat system (java clients, java server) where the server needed to run on Linux, (had been Windows). I was delighted that the server ran, without modifications, but was appalled to discover that under Linux, it required 6MB RAM on the server *per connected client* !! Apparently, this is a limitation of Java Multithreading under Linux. In the end, I re-wrote the server in PHP (php-cli, using sockets), and the result is vastly better!
u e(mainPane.getVerticalScrollBar().getMaximum());
Some other observations: Java isn't just "object-oriented" - it's "object-obsessive". Why can't we have, for example, a string primitive.
Also, in Swing, why is there no way to make the scrollbar in an applet's JScrollPane just stay scrolled down! It won't automatically scroll, when text is appended to the textarea, and there is no way to make it do so. There's an ugly hack, but even this isn't reliable:
mainPane.getVerticalScrollBar().setVal
I should perhaps add that I'm not a Java expert, (I learned Java specifically for that task) and I may have missed an obvious trick, despite google.
Lastly, I don't care whether Java is GPL, but please, Sun, can you fix the licensing so that it will at least play nice with the Linux distros (eg so that Mandrake can release RPMS of it).
Wrong. Good for you for trying, though.
Political language
I have been a Java programmer for 5 years and I even had a job developing Java pass on Linux. About 3 years ago I migrated to GLX at home. Steve
I've been programming heavily in C++ for many years. While I have a love hate relationship with C++'s complexity, I never thought that I would use Java heavily. But I've been working on more web services applications that access a database. The huge class library that is available with Java is a great advantage when it comes to developing these applications. Sure I can pay thousands of dollars to Rogue Wave and get some of the same features in C++ that I get for free using the Sun and Apache Java libraries. But why? The higher performance of C++ is of little use to most applications that references a database, since these applications are usually bottlenecked in the database. And when it comes to web services (e.g., XML processing, servlets, dynamically generated web pages), C++ cannot compare to Java. And then there is garbage collection, which makes develoopment faster.
There are still applications that I would not write in Java. For example, compilers or other algorithmically intensive applications that are CPU bound. There are also times when I can simplify my code by using C++ features like operator overloading (see my wavelet packet transform algorithm for example). But these applications are now in such a minority in the work I'm doing that I worry that my C++ "chops" will get rusty.
I went to a talk by Stroustrup where he discussed C++ (some cool algorithms to support linear algebra computation), future developments and C+++ vs. Java. He promotes C++ as a systems programming language. For things like operating systems, virtual machines, hardware drivers and compilers. He trumpted C++ as the most widely used programming language. What does not seem to have occured to Stroustrup is that systems level applications, where C++ shines, are a small minority of the code programmers write. My view is that C++'s star is fading.
So yeah, I'd say Java is heavily used on Linux. At work I'm part of a group developing a distributed database application in Java (this runs on top of a relational database, so Java's performance is not an issue), hosted on Linux. I'm in the process of setting up a Linux/PostgreSQL system on which to develop a financial trading application, again in Java, using XML and web services.
One of my associates emailed me to chide me - as the Debian tcl/tk maintainer I should know better - tcl has been byte-compiled since 8.0. I plead old age, early morning posting, and insufficient coffee. :)
Well, in our field we have lots of custom software that we use in-house for scientific data-reduction and for equipment monitor/control.
So we use Java for custom applications - GUI apps as well as web services.
James Gosling and some other Sun people came out here to visit, and perhaps got the impression that everyone in science is using Java on Linux as much as we are. Shrug. We like it.
The statistics are a bit skewed; there are a lot of good Java apps on SF, but there seems to be a tendency of those projects to be abandoned. I suppose the 'wrong' kind of people usually develop in Java because it's easier to get into.
Marxist evolution is just N generations away!
At work, I use Java on Windows, Linux, AIX, Solaris and HP-UX (and sometimes AS/400).
At home, I use Java on Windows and BSD (no longer run Linux at home).
Malachi
http://www.google.com/profiles/malachid
Well Spoken,
I was merely pointing out the rationale for Jython happening in the first place. It wasn't my intent to weigh in on the relative merits of it.
-- Posted from my parent's basement
... that while Sun can create classes with special semantics and overloaded operators, you the developer (you know, the person doing real work and/or paying for what Sun offers) cannot.
People talk about the consistency and elegance of the Java language, and it's hooey. Sun breaks their own rules all the time to give convenient little features like String +, but developers can't do the same thing.
I can't help but wonder why. Are developers not trustworthy enough?
Slashdot. It's Not For Common Sense
Java and linux is a very popular combination and for good reason. Java remains the most effective way to write business process solutions and linux is often teh best way to deploy them.
.NET and C# on the other hand scare me. Regardless of that "ECMA Standard" bullshit the truth is that only one company matters in the C# game and that's Microsoft. The same can't be said about Sun and Java.
I write only Java. I use only Linux.
I'm very tired of the knee-jerk "open source java" arguments. I'm Even more tired of the "Mono is morally superior to Java" argument. The JCP.org process is more than good enough for me.
Do you really believe that Microsoft would promote any technology it didn't control unless it didn't have a choice.
-- "Most people prefer a popular myth to an unpopular truth"
Or my personal favourite, clean... but as long as you can write elegant lisp and prolog you should have no trouble picking up haskell, and I'd bet it will improve you programming in other languages.
Personally I can't stand ML, but then it all comes down to personal taste in the end.
As far as I know, I don't really run any java. I've installed it I think for a token website or too and I pretty much always instal gcj along with a mess of other toy compilers 'just in case I want to play with it'. I tend to block java in the webbrowser, so even then it is rare.
At work, on AIX we run a lot of java, and my experience there tells me that it would be very unlikely that I'd be running java without knowing it. It may provide a pleasent experience for the developer, but it ain't too nice to users under X, especially remote X.
And it's down right hostile to sys admins who have to maintain the apps. Juggling jre's, keeping the right app pointed at the right jre, managing network problems caused by anti-social redraw behavior of remote X, the ever recurring class path problems and the joy of upgrading the universe all at once because some genius used RMI for a corperation wide protocol.
I really do prefer to write client apps for linux in java. I find it a good environment to write programs in and have them be very portable. Maybe eventually mono could be used, but i'm not sure it's time.
"but money is the God of Algiers & Mahomet their prophet." - Rich. O'Bryen June 8th 1786
This sure does not look like a flame bait post to me. I'd say, rather, that its informative. The poster is noting that Java, currently on Solaris is popular for enterprise applications. I'd say that's reasonable. Then they note that some users are going to .NET. The fact that the poster
believes that the corporate customers are not
going to touch Mono in the near future is an
opinion, and perhaps one that corresponds to
reality.
In the case of run once applications that are CPU intensive, like compilers, there is no question that Java can be slow (see my web page on why it is reasonable to consider compiling Java into native code)
I've been working on the design of a trade engine, which can support multiple trading applications. I'm an experienced C++ developer, but for the trade engine I'm planning on using Java (running on Linux and storing transactions in PostgreSQL).
One of the core issues in many financial applications, like a trade engine, is that they must record transactions in a database. Once you start inserting into a database it is likely that the database will become the bottleneck (unless you are using something like an in memory database (e.g., like the one from TimesTen). So the performance advantage that C++ can deliver over Java does not seem to apply for database applications. Sometimes database operations seem so slow that I fell like programming in smoke signals would make no difference.
The class libraries available for Java are more extensive than any environment I've worked in. In C++ you could only match Java's library by purchasing all of Rogue Wave's libraries. And even then, Rogue Wave can be rather obscure. In addition to the huge class library, Java gives you garbage collection, which makes development faster.
Java also provides many advantages to enterprise applications. For example, you can use an application server like Resin to start up your services and to support remote calls (via SOAP). You can also have dynamically generated web pages that display portfolio postions and other changing data.
Sun Microsystems. Where do you want to go today?
Before jumping on the MS band-wagon you should realize that they will never allow mono to become equal, better, or fully compatible to win32 .NET.
.NET compatible set of libraries.
.NET compatible libraries tomorrow, it would make no difference to me or to most other Mono users. The purpose of the Mono .NET implementation is not to develop new open source software on top of it, it is to let Windows users migrate their .NET software to Linux. Making it easy for Windows developers to migrate to Linux is a good thing.
.NET and they are easier to learn for OSS developers.
/. would rather embrace an MS product like .net
Before going on and on about Mono, you should at least know a little about it. Mono is a development effort producing several things: an implementation of of ECMA C#, an extensive set of bindings to open source software, and, separately, a Microsoft
If Mono stopped working on the Microsoft
But most Mono development is taking place using the open source APIs: Gtk#, Gnome, open source XML tools, etc. Those are already better than Microsoft
Its hard to believe that such a bastion of MS hate groups as
Yes, and the resolution to that contradiction is that you misunderstand what is going on. People aren't embracing an MS product, they are embracing an open language (C#) together with the open source libraries they already know and use (Gnome, etc.).
Ok, I did not know that the class libraries where available for download. I wasn't trying to misrepresent to make my point at all. Never attribute to malice what can be explained by ignorance.
That doesn't mean I'm going to change my point, however. When I said that Java is closed source, I was not referring to the class libraries. I was rather referring to the implementation itself. I am pretty sure that that is closed source. Note that I am not making any claims about the cleanliness of that code, other than that you don't know how clean it is, so you can't say that Java is better because other language implementations are messy.
Please correct me if I got my facts wrong.
I can't comment on other places of work, but I guess in our case its worth hanging onto talent, mainly because our problem domain is pretty specialised. Plus we've got to integrate with other manufacturers' military information systems, which makes the problem domain tricky^2.
If someone comes in raw, as I did, it's a couple of months before they even get a solid overview of what everyone's talking about and where their bit slots into the system. The guys who are retraining know our systems inside out and they are solid, productive programmers even with the limited tools and environments used for the older systems. Java is simple and C-like enough for them to be up and running after a 5-day course, and when they hit problems thereafter, they can call on my team (who are pretty experienced with Java) for guidance. The only hurdle, and it's a slight one, is getting across how rich the environment is and how much stuff has already been done for you, compared to the sparse environment they are used to.
While there's work to be done, it would be utter madness to discard all that knowledge, experience and "institutional memory" for the sake of a week's training, plus a bit of my (and others) time.
Ironically, when this project hits the production phase and the headcount is lowered in line with the required effort, it's likely to be me and others like me, who will get escorted off the premises bearing boxes and potted plants. The retrained guys will be ticking over very nicely and by then I doubt there's anything we could do that they couldn't.
T&K
Political language
Because someone thinks mod points are better used as a reward system than a way of improving discussions. Moderation involves bringing the best arguments to the front while sending offtopic comments and poor arguments to the back.
> Given the need to execute unknown code, usually an interface is
> used and the objects are made to implement it.
How will it execute _unknown_ code then?
A few years back, when I first learnt Perl, I had fun writing a perl CGI that took _perl code_ via a HTML form input and 'eval'ed it. I don't think one can do this easily in Java, can one?
You could just execute it in BeanShell...
:-)
(Of course, there'd be no testing and no security so you wouldn't want to do this anyhow.