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'm using C++.
It has everything I need - and I can predict how the compiled code will behave.
Java has the *only* advantage, that it has a very powerful library. All other points are either a draw or worse than C++.
(And for the real arguments use Google and search for 'Java C++ flamewar')
what exactly can Java do that C,perl,python etc etc cannot ?
and with projects like Mono the need for Java becomes less and less each day
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).
Ok there seems to be a big call to 'open source' Java's code.. what is the problem with it now? and if there is a problem why can't you write your own version? while there are some benfits from open sourcing some projects, I'm getting sick of this 'its not open source its bad' and if it is open source people get a little shitty because its not under GPL..
At least the mono team have enough balls to write a system on thier and not bitch and whine because it isn't open source because of these freaks that think that they can do something with it but they really can't..
thats my 2 cents US
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.
thats great. given that tomcat can easily bring a server to its knees and eat tons of ram I'll be happy to use your banking/trading systems. oh maybe that prince still wants some of that money transfered....
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!
"So who was right, how many Slashdotters are also Java users?"
With the title as "How Much Java in the Linux World?", you can't automatically assume that all Slashdot readers use Linux. I don't, but I do use OpenBSD, IRIX, HP-UX and Windows 2000.
Sorry, it's just a small point, but pertinent.
t was billed, to the press anyway, as a debate on "The Big Question."
It brought together, in the general session hall yesterday morning at JavaOne in San Francisco's Moscone Center, seven highly vocal actors on the technology stage, including: Brian Behlendorf of the Apache Software Foundation; Professor Lawrence Lessig of Stanford University; Sun's Rob Gingell, Chairman of the Java Community Process; Rod Smith, VP of Emerging Technologies at IBM; and the father of Java himself, Sun's James Gosling.
But what was the question? Was it should Sun open-source Java? Or was it if Sun were to open-source Java what exactly would that mean? Or was it, more philosophically, is Java bigger than Sun alone - and if so, how can others who have invested heavily in it, like IBM, BEA, and Nokia for example, get a better seat at the table in the process that shapes it, which is currently the JCP?
In other words, there are multiple questions. Questions within questions. It isn't as easy issue.
Sun Microsystems however, fully in tune with the "today is geek day" theme of the overall general session this morning, made a very good first attempt indeed at showing itself publicly to be a thoughtful and an open-minded custodian of the current process under which Java is evolved.
Both Rob Gingell and James Gosling listened carefully to the arguments that were advanced by Brian Behlendorf, CTO of CollabNet in addition to being co-founder of Apache, and by IBM's Rod Smith, whose now notorious Open Letter to Sun caused the whole open-sourcing discussion to really blossom in the Java space.
"We're hitting an interesting inflection point," said Smith. Innovation in the open source community as well as the Java community is plateau-ing, he contended. "We want to see innovation happen at a more rapid pace," he added.
"My view," Smith continued, "is that we want to see an open source Java married more with the open source projects that Brian and other folks are doing. In enterprise development you want to be able to experiment outside of the box and then try it in a customer environment before bringing it into the JCP and completing the more formal process."
The moderator of "The Big Question," open source advocate and publisher Tim O'Reilly, asked Smith just what he meant by open-sourcing Java.
"Java is about compatability," Smith replied. "J2SE people expect compatability, so you could open the TDKs around JSE where customers and others could get involved with testing for compatability. The Jakarta Project set the foundation for things we see today - Struts and JSF for example - that have come back into the JCP process."
Sun's Rob Gingell, in his capacity as chairman of the JCP, had no issues with this overall train of thought. "This would be a continuation of a journey we've been on for 10 years," Gingell observed. "Originally it was Sun and Sun only, now it's a variety of contributors, and we know it's going to continue to evolve. But there's a fundamental promise: that Java programs will not be lied to by things pretending to be Java." (This brought a round of applause from developers in the keynote hall.)
Brian Behlendorf stressed the importance of "framing the conversation correctly," as he expressed it. "The Java community should support the open-source way of achieving ubiquity," he urged. "The open source community around Java would like to look at compatability of open source Java as symbiotic with innovation, not as two opposed ends of the spectrum."
Creating intermediate/experimental versions of Java that might not be compatible is a natural part of the open source process, Behlendorf argued. So long as this fact is made transparent. "We believe in the 'sunshine law' - that open review leads to better standards and better implementation," he said.
Lawrence Lessig agreed that Behlendorf and the open source community is right to separate the question of how you get implementations developed from the separate issue of how you get them verified fo
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 ;-)
There is one thing that puzzles me: why don't we opensource people start creating a JVM for ourselves instead of relying on SUN?
Sun does not want to open her code, but on the other hand It's already possible to create an opensource JVM based on 1.4/1.5... Sun allows its patents usage to create them and it would be vastly counterproductive for Sun to start suing an open JVM.
Maybe instead od calling it JVM call it something else... Kaffee for example has a great name. Gnu Classpath has the problem of being GPLd instead of having a saner license like Library GPL (with anti-viral-stallman-disclaimers-and-exceptions) or CPL. Also many technologies that come inside the newer Java releases are already known because they come out from multi-years JCP/JSR.
So, what are we waiting for? Let's create OUR jvm and OUR rt.jar and eventually if it will spark some interest people will add it.
When Linus Torvalds started programming Linux, he wasn't begging Novell (or AT&T) to release their Unix implementation as opensource, and neither did RMS. Why it should be different this time?
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.
Before the nanobots took over his brain, he knew that even internal Solaris developers were unable to use Java to build stand alone apps.
That would never happen at Microsoft, there they would add special secret hooks to the tool so that the internal developers got decent speed.
So, if Solaris developers aren't doing how are Linux developers doing it?
They aren't. - Sure, stuff that are wrapped in some kind of support blanket app (apache, Mozilla) written in a real language but not for gui based or fast, small, elegant, resource-efficient daemons. I'll take FLTK and the myriad of beautifully written tools in other languages.
Another way to look at it is What would we lose if all Linux Java apps suddenly disappeared?
For most people (except Chinese dissidents) nothing. Now ask the same for C, C++, even, heaven forbid Python. Totally.Different.Answer.
Gosling was making an overstatement..yes Java is heavily used in embeded Linux right now and is hot.. but no not on linux desktops and no in web services..
.. SUn just bought the company and built the compiler the first time which as Java0.9(Oak)...maybe Step father woudl be a closer factual defitnition of Gosling's role or SUN's role?
The most in webservices is the Perl and PDp..
desktops its a combinationof of perl, tcl, and etc..
and no Gosling is nto the father of Java.. java was half speced out by a small research company
Don't Tread on OpenSource
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...
Doh. Of course.
Java is surprisingly popular, much more so than it deserves to be, because so many PHBs like the buzzword. So perhaps you could defend that statement by construing it to mean 'incredibly heavily used, given its limitations and liabilities' but somehow I don't think that's what Gosling intended.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Friends don't let friends enable ecmascript.
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.
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.
Try 'incredibly heavily cursed' for all the times it drains cpu/ram, locks X up, and crashes my browser (on a P800). It may work on just about any platform, which is neato, but it's still a pain in the neck to use.
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.
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 think java is mostly used More on systems that need to be OS independent. But for a linux only application, C_ is better/used more.
- Webmaster of infoweb
I have been working in java for several years and I like the language a lot. But I think that java may be overtaken by .Net and Mono very quickly if Sun are not careful. Two thigs bother me about java.
The Swing GUI looks awful. They really need to improve the font handling to catch up with the smoothness of XP and Linux XFT. I see no sign that they are doing anything about this. I know Sun are concentrating on server-side, but if you can't run the same language client-side then they have an uphill struggle, and Mono may have a huge attraction there.
Java is not open source. This means that no-one can ship java with a Linux distro - you have to agree to a multi-page EULA before you can use it. And it means that the future of any program written in java is not safe. Sun could at any time choose to start charging $50 per CPU (they have been short of cash recently - a bean counter may think this is a good idea). Or if they fold completely (I hope not), they could be bought by someone who chooses just to shut java down. This cannot happen with Mono.
I am a java fan, not a Mono fan, but I fear the writing may be on the wall. I am planning to give Mono a spin to try it out.
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.
*sigh*,
.NET Thank god there is Mono i can still do coding at least partially in Linux.
I was until our corporation decided to switch to
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.
My company is developing software for third party logistics applications. We write in Java almost 100% under Linux.
My last company did a gene sequencer based on real time Linux. Except for a little RT module, which was in C, the application was in Java. I used a shared memory buffer to exchange commands and data between the two sides.
I'm also working on a new medical instrument, it's 99% java, with a little native code to talk to some hardware.
Every now and then I have to switch back to C/C++ for a while. I still love those languages, but doing the memory allocation thing by hand feels so primative!!!
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
It's not funny. It's insightful.
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.
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.
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.
We just do everything in VB.
subject says it all. It's all about the code not the platform. Java eliminates platform delivery as an issue. Life is good and Jit compiling makes it even sweeter; check it out.
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++
I don't have java installed on any of my linux machines. If there were one application that I wanted to use that needed it, I would install it, but there isn't. Most of the java apps seem to be editors/IDEs (Eclipse, jedit etc) which are more than covered by non-java alternatives. (Before all the OpenOffice freaks jump on me, I simply don't have any need for an office suite, thanks.)
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?
...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.
It is taking over the world, right?
IN SOVIET UNION Java uses you!! and uses you up heavily! Damn JVM !
What is best in life? To crush your enemies, to see them driven before you and to hear the lamentations of their women.
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
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.
Get the J2SE .rpm package, and use alien. This converts it to a well-behaved .deb, which gets installed in a standard place (alien has a special script for java).
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!
by the business world, not necessarily by hackers. When the business world started moving from Windows/UNIX to Linux, what do you think greased the wheels? Java. People realized that Websphere and Weblogic worked just as well on Linux as on Windows/UNIX, for less cost. Do you really think business people would have moved if they had had to bear the significant cost of porting apps?
One thing I've noticed is that with Java and a reasonable IDE (Netbeans, ymmv), java is resilient to big changes. Find out half-way through the program that you need the username even for queries? No problem, change the interface, the IDE will put in the methods and lead you to each one to fix.
With looser languages, make a change like that and you've got to figure out each little place that needs to be changed, and if you miss one you get runtime, not compile-time errors.
-- ac at home (who does miss multiple inheritance)
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
How/why does/would an obviously/clearly sarcastic/funny post/comment get modded/called "insightful".
Ohhhhhh....
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.
and from my perspective java sucks just as badly as flash... it is a bloody resource hog, causes very noticeable slowdowns even on this box (P4 2.6 with a gig of dual channel ddr) and in exchange for this doesn't actually *do* anything that hasn't already been done better and faster using other methods.
Like I said, I'm not a coder, but I'm guessing java is propular because it is possible to create quick and dirty (spelt CHEAP) solutions to relatively minor coding challenges.
Certainly from the end user's point of view and resource hogginess it is crap.
"Ah yes, you need to enable activex, java, javascript and flash in order to use our online xxxxx service...."
err, no thanks, I'll take my custom elsewhere or simply go without.
http://slashdot.org/~GuyFawkes/journal
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
Yes, you're right, "Java" is a buzzword. Much like "The Internet" and "Color TV"...
I know that at my university (University of Toronto, Ontario), most of the computer labs for engineering and computer science people are linux based. And that Java is the preferred language for instruction (with C a distant second).
-- Frank Hsueh, frank.hsueh@gmail.com
if it were open source
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 ;-)
Java is a fucking plague foisted upon the world by Sun. It's a bloated, CPU pounding, RAM sucking ball of goo. Couple that with insanely complex frameworks for relatively simple tasks, such as spewing database query results to a webpage via a webservice, and you have a colossal money and time waster.
There isn't much that 10000 lines of Java can do that 1000 lines of Ruby, Perl or Python can't do.
Had Java been released as a open source project from day one, instead of being forced into the IT world by the Sun marketing machine, it would have been DOA.
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.
``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.
Is there any provision to provide a statistical followup on a story like this so that all the /. members can really benefit? It only makes sense to share on a topic like this if somebody took all the comments and distilled it down to some useful stats. Otherwise, this story is not living up to it's billing, no? I guess my question is.... Who will do it? And how do we know when it's out there? Hey I just provide ideas... I don't actually do any work... :)
``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
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
I'm a Java developer. I develop enterprise Java (not J2EE) exclusively on Linux. The end result may be deployed on BSD, Linux, Solaris, AIX, or MS (which then generally gets deployed back to Linux).
You simply can't beat Java's performance/portability curve. Not with anything. You can hack Java to death on Linux and it won't break. That's unique among any of the environments I work with.
Like many Linux/Java users, I have been concerned with Sun's recent activities. I started doing research for alternatives to Java. I was looking for something that has the same portability, performance, and community support.
Let's just say I was relieved to read that Sun was considering open source.
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?
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.
LOL a 700k trying to best a 1k aided by a sub-k...
/. UIDs? :P
Or am I reading too much into
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
From Mercury Computer Systems, www.mc.com
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.
Yeah, while at the same time reducing functionality.
;)
No thanks, I'll prefer to do to what I want, vs what the compiler wants.
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.
If you don't look outside of web applications, it's making great head-roads on the server side not only does it have libraries for everything you'd want to do, it's got the power to put them together easilly and achieve great thigns with them, coupled with the flexibility that if a windows machine drops dead you can put a linux machine in it's place and nothing will moan.
Though my current annoyance with java is trying to get it installed and able to process servlets/jsp (mainly due to reaching the limits of php when processing XML
The majority of Java people I know are also Linux zealots. Many of those love Eclipse, but most do not run on IBM.
As long as Sun still releases an official, Sun-manufactured, release kit, so it can be used in secure environments, then open sourcing would get nasty bugs fixed sooner that otherwise seem to perpetuate for way too long.
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!
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
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).
or .NET. Those are the only two viable enterprise platforms these days. My company builds enterprise systems for large (Fortune 500) companies. Most of our clients are still Java on Solaris. In the past we did some work for start-ups with cash to burn, and we had a couple of Java on Linux projects. We've also done a few .NET (on Windows of course, no large companies are going to touch Mono anytime soon) though it has always been .NET talking to an Oracle database. Still the most common combination in any industry (finance, staffing, supply chain) is Java/Weblogic on Solaris with an Oracle database. Nothing's really changed in the last four years in that regard.
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.
I think Gosling means widely used as in VB. VB has/had far more developers than VC++. Most in house and niche software till recently were developed in it. But it is very hard to come up with good general purpose applications written with VB.
.NET/Mono whenever I have the choice.
I essense, Java is widely being used to create business software and research software but they will not be in any Linux distributions to represent it's use.
Personally, I would like Java in preference to C++ but I always prefer Python, Delphi and
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
You may be right. But make it simple, not too simple.
For example, leaving out complex variables was a huge oversight/mistake in JAVA.
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
"thats great. given that tomcat can easily bring a server to its knees and eat tons of ram"
Do you have idea how many websites you visit use Tomcat. I have used several banks that have a system that uses Tomcat and have had no problems. Maybe your bad experience with Tomcat and servers is due to the fact that your an idiot and don't know what your doing? Have you ever even used Tomcat? Do you even know what Tomcat is or did you just try and reply to that to sound like a jackass?
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
If you look at the number of people running J2EE application servers on Linux, you might say its heavily used.
Java doesn't shine in its client uses though. Its bulky, slow to load, etc. I've used many java based client programs under linux and I can just say that I prefer the lean feel of a C/C++ based GUI.
So it is heavily used, at least where I work, and Linux servers.
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!
It's generally a better idea to replace #ifdef's with function calls. Instead of writing 15 versions of a piece of code, stuff it all into a function body which you can modify easily for each platform.
Of course, it could be that for your particular application it had to be absolutely 100% screaming superfast with a micromanaged footprint (like on a slow embedded system from say 10 years ago), but good compilers help, and it really is a much better approach than trying to manage #ifdef hell.
Also, consider that the functions can be implemented at whatever level of abstraction is most natural, so you can actually gain on size, performance, and programmer productivity, even without an optimizing compiler.
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 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!)
We're going the other way. Our new CTO has decided to discard our existing .net codebase with only a minimal evaluation of it's usefulness. We'll probably also lose 1/2 of our developers, along with all their knowledge & experience of how the application should work.
*sigh*
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!
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
-- Overloading?
.equals simply isn't going to kill you. That's a 6 char difference. I can type that in 2 nano seconds.
Why is it C++ programmers can't learn to type?
If you learn to actually use the keyboard effectively typeing
= and
This is the Most Stupid argument I've ever heard.
Guns are available, but I don't want to shoot myself in the head, thank you.
Use the least complex tools possible without compromising function. Complexity is the enemy of reliability!
As an example: I recently had to upgrade dozens of Red Hat servers to RH Enterprise Linux, in order to satisfy legal requirements imposed by the Fedguv. On some of those servers, the programmers had loaded every CPAN module in sight, because they wanted all the "power" and "enhancements" you and the original poster are talking about.
Porting the business processes written using "powerful library enhancements" was a nightmare... but the servers that were built by the systems group, who have a stern policy of writing everything in basic straight perl rather than loading modules, all upgraded easily and flawlessly.
The time spent debugging the applications that were difficult to port far exceeded the time required to write applications without use of fancy "enhancements". Time = money, case closed.
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).
At the University of Virginia, the compsci department is starting to do a little something with Java (but compsci has been so flaky in recent years that this is hardly surprising). One postdoc in astrophysics uses it, and I think one graduate student. Maybe there's someone in chemistry.
Physics students -- who ironically are the ones who write the most code around here -- are using C or FORTRAN 77, plus lots of Perl and Python to bind it all together.
On the other hand, most of the physics students are kind of paranoid. The GPL is protection for us: if we use a GPL library, it guards us against the university taking our code. As a result there's some serious distrust towards closed software.
You want biased? How about the wording of this /. article?
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
Microsoft killed it with their J++ extensions and non compatible VM. Half the stuff that's out there won't run on a Sun JVM. It's over. Let it go.
Get on the .NET bandwagon. Mono is going to have to follow where .NET leads. Compatibility through overwhelming force. Don't compete with the big dog.
If you were blocking sigs, you wouldn't have to read this.
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.
I forgot, what does JAVA stand for? Java something something something...?
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
... 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.
Even if .NET was available on Linux, Java would still be heavily used, but so would .NET!
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
...so does that count against his argument?
> 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.