Java creator James Gosling: “Just because Sun didn’t have patent suits in our genetic code doesn’t mean we didn’t feel wronged. While I have differences with Oracle, in this case they are in the right. Google totally slimed Sun. We were all really disturbed, even Jonathan: he just decided to put on a happy face and tried to turn lemons into lemonade, which annoyed a lot of folks at Sun.” Ouch. Also, doesn’t jive with Schwartz’ comments – might be illustrative of how bad things really were at the once great Sun.
This is all blah-blah. Unfortunately, this case is hugely important. What is at stake is whether an API is subject to copyright. If it’s not then Oracle can go forth and multiply (or rather, move the case to the patent claims). If it turns out an API is copyrightable, then we are in for a huge mess.
So what if Google slimed Sun? Get over it, it’s a programming language. To me the attitude of Java people is completely childish. Instead of working to improve Java they become paranoid about what other people is doing.
Sliming isn’t an illegal activity as far as I recall.
The article at cnet (http://news.cnet.com/8301-1035_3-57423538-94/oracle-google-trial-pu…) is pretty funny, apparently in 2008 (2008!) Vineet Gupta, chief strategy and technology officer of Sun’s OEM software systems engineering, thought that Suns Java/JavaFX/App Store was competitive with Android. Seriously.
I think everything you need to know about Sun’s demise is right there. Horrible implementations of great software design, leading to delusional thinking about building consumer side technology developers and consumers will want.
“Sliming” can be illegal, depending on where you are. It’s legal in the USA, but in Merrie Olde England, one can be hauled before the bench for hurting someone’s feelings, even if the words used were demonstrably factual. And isn’t someone facing 20 years of lockup for letting others “insult” the king of Thailand on her website?
I didn’t think that sliming in that context meant libel. I thought they were saying that it was “unfair” for Google to use a Java like language that would help destroy the actual Java ME phones that paid money to Sun, without having to pay Sun anything.
Sun just sucked so hard at coming up with any consumer facing device that ran Java, it must have been really hard to watch someone else do it without sharing in that success. If Sun was smart, they would have accepted *anything* in return for a license fee. This lawsuit will not accomplish anything substantial for Oracle.
hehe
I remember the days when Sun/Java was the great white hope of the “freedom loving” programming community.
But then a new flavor of the month comes a long, gets in a conflict with Sun/Java, and those freedom lovers have to choose sides, and they decide side with the new boy (Google) and throw the old one under the bus. lol
Meanwhile, as time goes on, Google’s “Do no evil” mantra becomes more and more a farce, yet they continue to get a pass from the so-called “freedom lovers”. hehee
What are you trying to insinuate? That the OSS community is not loyal because they are angry at Oracle? Is that what you are calling “throwing under the bus”??
Give me a break. People are mad because Oracle is going back on their open stance wrt java. There is nothing wrong with that.
I’m not “insinuating” anything.
I’m just amused at the transpirations where two (current and/or formerly) heros of OSS community now fight eachother, and the OSS community feels compelled to pick a side to root for.
I understand the stated reasons for siding with Google, but it’s not clear to me that Oracle/Sun is more “evil” than is Google. Maybe the OSS community is still wowed by Google’s “Do no evil” baloney.
Oracle has never been a hero of OSS community… And Sun ceased to be one when it was bought by Oracle.
You have a really bad memory, Java was always treated poorly because it wasn^aEURTMt FOSS. Then it became GPLed as OpenJDK yet was one version behind, all the while the JCP was in deadlock, and then Oracle bought them. Nothing seemed to all go well at once.
The OpenJDK release was a great vindication for freedom lovers, but I don^aEURTMt think anyone saw it as the great white hope you claim.
You don’t think anyone saw Java as the great white hope?
I used to frequent JavaLobby.org and the Java.lang.advocacy (whatever the exact name is) usenet group back in the day, when those sites were thriving (they still exist (the former as a dzone site), but have died down considerably since their heyday). And I read Nicholas Petroly’s bs. And slashdot. And InfoWorld. And it was all about how Java, “write once, run anywhere”, was going to free mankind from “Wintel”. Scott “I hate Microsoft” McNealy was held in high regard back in those days as a white knight (before he ran Sun into the ground by doing sooooo many stupid things based on “I hate Microsoft” rather than practical strategies).
P.S.
Remeber the big “Netcomputer” push, where computers would simply run Netscape Navigator and all apps would be Java apps run from the web? And that would eventually lead to computers where the OS would be “Java OS”, an OS that just runs Java apps (without the need for Netscape or any browser)? Lots of OSS folks were down with that (like many of them are (or were at one point) down with Chrome OS today, which has a similar vision).
P.P.S.
I remember a speech McNealy gave to an OSS conference. He got up on the podium and said, (not a verbatim quote) “We at Sun believe that all software should be <pause for effect> free” and the crowd gave him a standing ovation. He went on to talk of spreadsheet “appliances” and word processor “appliances”, where such programs would be packaged as hardware dedicated to the specific task in question (he must’ve forgotten that word processors actually began just that way (my grandfather’s first home computer was a dedicated word processor), and the public had moved to using general purpose computers). And he explained that the software would be free but companies would make money by selling the “appliance” hardware. And the peeps in the audienced cheered and McNealy had a big grin on his face. lol
I hope this legal uncertainty just kills off Java for good.
Java is a pile of crap that encourages more piles of crap to be written. I hold Java directly responsible for Eclipse and OSGi, and thus the piles of crap that they also induce.
You’ll probably get modded down for that comment, but you’ll get no arguments from me
I take the main problem you have with Java, if C++ is your ideal, it is that it does not suck enough.
C++ is a much better language than Java, especially with the improvements and simplifications, like the auto keyword for type deduction, or the automatic memory management of shared pointers and move semantics, of C++11.
People who dislike C++ do not understand how to use C++ properly and should under no circumstances be allowed near important code.
“It seems that perfection is attained not when there is nothing more to add, but when there is nothing to remove”. Antoine de St. Exupery
Sounds like the COBOL developers in the days of yore. Frustrated elitist people fading into irrelevance.
“Argument by Quote is a sure sign of intellectual stagnation” – me.
No one said C++ is perfect, except for those who make strawman arguments against C++. C++ isn’t perfect. It cannot account for new programming styles, and so new features must be added to support new programming styles.
The problem with your argument by quote is that it implies C++ usage somehow uses all C++ features. The best C++ programs/libraries only use what makes sense for the given design solution to a problem. None of the added features are strictly necessary for any tasks and so do not really add anything to existing programs/libraries that already work well.
I fear for people subjected to your code – a person who obviously thinks that every language feature of a language must be used.
COBOL is still around (and still being written). Mainframes are still around (and being bought new).
The only elitists are web programmers who think they are the hottest shit around, completely oblivious to the fact that not everything can be written in markup language with dynamic languages injected here and there.
C++ programmers have every right to feel elite over people who write phone apps.
From one quote you got that? This thread alone has more quotes from you to portray you as an arrogant person.
Phone apps? Elite? So you don’t even bother refuting that you feel morally superior based on the fact that you use C++?
Oh, apparently, it’s okay for you to take my tongue-in-cheek “C++ forever” comment title and conclude that I made the statement “C++ is perfect” and a whole slew of other assumptions about me?
You’re a hypocrite.
I say it purely because it upsets people like you who have an inferiority complex to someone who prefers C++. I feel morally superior to people like you who can’t handle the fact people can prefer different things to you.
In other words you’re trolling.
Not really. I’m just amused why it upsets you so much that I’m arrogant in your eyes.
If you think I’m wrong, why didn’t you just argue your points rather than make ad hominem arguments? Being arrogant doesn’t make me wrong. Being wrong makes me wrong. It is up to you to show why my reasoning/logic is wrong despite my supposed “arrogance”.
Because your arrogance will preclude from accepting that others have different opinions?
Let’s go though your arguments, why C++ is “better”(removing all the inflammatory text):
Those “simplifications” are mostly syntactic simplifications, that really don’t simplify development much.
The best. The best Perl/Java/Python/Ruby/whatever programs run exceptionally well and are understandable, maintainable in addition to being faster and cheaper to build. These aren’t the 70’ies, where the programmer was god.
It’s not that C++ libraries/programs use all the features, it’s that the “pollution” by these features will degrade longer term development efforts in favour of “cool new stuff”. Most languages suffer from that, but C++ has the biggest baggage of options to chose from.
Then why add them?
How about code maintainability. Does that matter? Mixing paradigms without properly thinking about it is a bad idea(I don’t care if you like it, I have to deliver a working solution not your “pretty code”). The fact that you aren’t stuck, means that it wasn’t designed for any of those properly. It’s complexity comes from having 1000 ways of doing one thing, where there should be one.
And now for the crown comment:
So informative and argumented, and not in any form inflammatory./s
Really? Hasn’t seemed to stop you…
So tell me, how has my arrogance magically precluded other opinions? Have I said “and there’s nothing that can convince me otherwise”? I didn’t realize my words had so much power as to stop people from having other valid opinions merely due to me having uttered them!
Oh yes, and those simplifications (and IMPROVEMENTS, which you conveniently omit) I mentioned are the ONLY ones made in C++11? It could NEVER be that I was listing a few and implying that there is more! Or would you prefer me to list EVERY SINGLE ONE? Do I have to draw intestines when I draw stick figures?
Have you considered the ones I didn’t mention may be more substantial and relying on the intelligence and intellectual honesty of readers (which you demonstrate you do not have so you could win arguments) to research what they are and how they could possibly improved C++ usability?
You obviously have no clue what you’re talking about.
In C++, features you don’t use don’t cost you anything at all. That is one of the design requirements of C++. Therefore, there is no “pollution” because if a C++ library is already well designed and well tested, there would be no need to include the new C++ features just for the sake of it.
Right now, your argument is basically blaming C++ for the mistakes of programmers who don’t know how to design and implement with discipline. You are proof of my earlier contention that people like you should stay away from important code.
If the shiny new features of C++ would cause you to pollute code, please stay away from that code and save everyone you work with a massive headache.
Because some people DO need them. C++ provides a toolkit and it’s up to the users to use the tools they need, while still having other tools. When you do DIY work, do you just have the tools you need in your toolkit JUST for a specific task?
Why does Java have threads when lots of programs don’t need them? Why does Java have socket implementations when lots of programs don’t need them. You really haven’t thought through your argument, have you?
Because different designs require different programming styles. You claim to have understood the point previously, but you obviously don’t.
OO doesn’t work for everything. Procedural doesn’t work for everything. Functional doesn’t work for everything. By having multiple programming styles, you can pick the one that matches the problem/solution, which is perhaps the best thing you can do to make something easier to maintain.
Mixing styles without thinking about it IS a bad idea. THAT’S WHY WE ENCOURAGE PEOPLE TO THINK ABOUT THEIR FRIGGIN’ DESIGN AND STYLE. Seriously? I have to explain this to you? Basically, you’re admitting your whole hatred for C++ is your irrational dislike of THINKING ABOUT A PROBLEM BEFORE DIVING INTO IT.
You’re shallow understanding is frustrating.
I’m SO SORRY that you’re so petty as to be inflamed by my comment! You’re not a loser at all!
C++ used to “suck” (in relative terms, but not in absolute terms, IMO), but modern C++ I think is my favorite language right now (unless I want to do something in a more natural “functional” style, in which case I’ll go for F# (or lisp/scheme, if I’m in an old-school mood)).
I started with C++, moved on to Java at one point, then moved to C# (which began as a cleaner version of Java, then moved well beyond it while remaining cleaner), and i’ve liked both, but I’m back to C++ now.
It sucked most when it lacked a standard, and then when it got one, lacking a decent implementation of the standard.
That is what I would consider still a weak point. STL Algorithms and lambda functions and function binding are okay, but the language itself needs a lot more facilities for functional style programming.
I also won’t argue about java. But I would have to say that its level of adoption in part brought about its mediocrity.
c++? It’s all I use, but no way would I say it’s the best language out there. Its amazing how it’s stayed relevant for decades and is still modern. And all these new languages that are supposed to be c++ killers…i haven’t been impressed.
Actually, looking back at what it used to be, it was also pretty crap to begin with. After that it was mostly about patching up oversights.
I don’t think even Bjarne Stroustrup would go so far as to say that C++ is the best language, otherwise he would never be involved with efforts to improve the language.
The best thing about C++ is that it wasn’t designed with a programming style in mind. You aren’t stuck with just one of OO, or functional, or procedural.
If there’s one thing I hate about Java is that it encourages the use of inheritance everywhere.
It would help, if many self proclaimed programmers would stay away from keyboards.
Java sucks? Yes
C++ forever (for modern application development)? WTF are you smoking?
Seriously there is one language that has, on it’s own, nurtured an explosion of great apps in the last couple years: *Javascript* + HTML + CSS3.
Please can someone realize this for a desktop environment so we can move forward at a pace that isn’t bound by 1990’s languages and technology (gnome3 sort of except not sucky like gnome3 and not with gtk)
For mobile development it is just a matter of time. With chrome for android 4, there is now hardware acceleration for css transforms and mobile apps will feel as buttery smooth as native. Plus app development time will literally be 1/2 developing in Java. The webkit widget for ios is sadly crippled but also getting better.
You should give Qt5 a try. The guys behind it seem to think a bit like you. Swapping C++ for Javascript as the preferred language for small software, hoping that GPU acceleration will compensate the performance hit…
Myself, I really don’t think that web techs will ever be capable of powering heavy-duty software like After Effects, Logic, or a serious video game. But hey, who knows…
Edited 2012-04-30 22:51 UTC
The problem that faces C++ is lack of standardization of GUI stuff. However, with toolkits like Qt, which is an example of beautiful C++, it is a non-issue for the three major platforms.
So… who writes those Javascript, HTML and CSS3 interpreters and what language do THEY (ie, people more important than you) use?
GTK is an attempt to make C more like C++ when C++ would have been a better choice to start with.
C++ forever indeed. Hyped stuff will find it’s niche, but C++ isn’t going away for high performance applications. You don’t seriously consider using JavaScript for them?
C isn’t going anywhere. C++ on the other hand…
If we take into consideration that many OS parts are now written in C++, you may be right…
If Java can be a pile of crap that encourages more piles of crap, wth is Javascript on that spectrum.
It is still a few years from being anywhere decent enough to write full blown apps that don^aEURTMt churn and cycle^aEURcollect through the user experience.
I recently was involved with writing a web interface for a mainframe program using Dojo. Unbelievably, I came out of it wishing Java was more like Javascript.
There’s something Python-esque about Javascript.
* I love Python as well. Between C++ and Python, everything is covered.
Java if you want an over-engineered solutions that takes a gig of ram and 1 second of wall-clock time to print ‘hello world.’ C++ if you want to crash and burn, while you spend all day hunting the f**king memory issue that core dumps almost randomly! Ada Forever!!!!
AND YES – I AM ONLY JOKING.
You’re using it wrong.
During my university years, somehow I became interested in language and compiler design. Didn’t have much of a preference for any language, except for my “me too!” bias for Java’s garbage collection. Then for my final year project, to be written in C++ by four people, I made the decision to liberally use the STL and Boost right off the bat. I am proud to say that there were absolutely no memory related problems. From then on, I understood how C++ could be used in a good way.
Now, my job consists of writing Java to implement Eclipse plugins. The issue with them is that they force you to write bad designs.
It is a good judge of a programmer’s skill and worth to see if they hate C++ because of implementation issues, or if they hate Java because of design issues. If you’re still stuck hating memory management, go back to university – the big boys are worried about design.
Actually, I like large parts of Ada as well. Especially how you can specify exactly how you want records laid out in memory. Or how you can specify ranges. And of course the built in concurrency.
Yes, and that is where the actual programming language is irrelevant. Unlike what you are implying all over the place.
PS: If you even try to imply that C++ is perfect in design, I’m going to laugh at you.
Oh yes, because COBOL has no effect on design. Oh yes, because Fortran has no effect on design. Oh yes, because LISP has no effect on design. Oh yes, because Pascal has no effect on design. Oh yes, because Smalltalk has no effect on design. Oh yes, because Python has no effect on design. Oh yes, because Erlang has no effect on design.
Unlike the fantasy world you live in, real world code is unfortunately written with resource limitations. That tends to manifest early in the form of code that conforms to the implied design of a language. No one has the time to rescaffold a language to become absolutely design neutral. They write to accommodate what a language lends itself to more naturally than others.
Well then, you need to get your eyes checked, because I’ve already written that C++ is not perfect.
The first C++ comment I made was in the title of my first comment, which said “C++ forever”. It was you and other people like you who somehow took that to mean “C++ is perfect”, which is a strawman and completely expected from people who have no understanding of logic.
That is why the language and technologies are chosen after the general design is thought of.
(I’m going to lawyer out of this by pointing out the meaning of words “imply” and “if”.)
…***…
Man, you ARE living in a dream world…
Except you obviously meant that you expected me to make (or have made) such a sentiment. “If” and “imply” doesn’t enter into it because you already made the comment after I had already said C++ is not perfect. You tried to preempt me not realizing you were already beaten to the point.
Well, while it may not be the fault of the language itself, that is exactly my impression of most Java apps. Hilariously over-engineered, fantastically under-performing and unnecessarily complex.
Maybe the attraction of Java is that it allows shitty programmers to create job security…uhm..I mean “enterprise-grade applications”.
The main problem I find is that Java programmers tend to have an unhealthy obsession with design patterns and frameworks. It’s like they haven’t even heard the concepts of cohesion and coupling, which is more fundamental to design than showing off knowledge about the Gang of Four book.
I don’t think that’s particular to Java. I would see it in RoR, where you had a dependency on a gem or plugin for some small piece of functionality, which you could write in about 5 minutes. But in order to bring in that gem or plugin you had to bring in other gem
You’re right, but Java frameworks takes the obsession to whole new heights, in my opinion. All the other latecomers just follow suit because it’s the done thing.
If the judge decides that APIs can be copyrighted, it won’t kill just Java, it’ll create a huge mess everywhere.
As for the patents, I don’t know what exactly is the situation here, but those who use the GPLv2 implementation may be safe (due to the implicit patent grant but it’s not tested in court so not sure).
The funny thing is that Eclipse is one of the best Desktop Java apps. Which, not coincidently, was not written by Sun and didn’t use any Sun created GUI toolkits. And it still kind of sucks ( depending on your use case).
I use Eclipse (and derivatives) all the time and I absolutely don’t find it a good Java program at all, let alone best, even on a Windows 7 64-bit quad core laptop. If emacs is a crappy OS emulator lacking a decent editor, then Eclipse is a good OS lacking a decent computer processor. Yes, I’d never thought it would be possible to describe something as such until now.
And let’s not go into the design freakshow that is it’s platform plug-in architecture, for anyone that’s had to write a plug-in.
Edited 2012-05-01 20:14 UTC
I didn’t say it was a good program, but the best desktop gui program written in Java. If you think there is a better Java Gui App, I’d love to hear it.
I don’t think there is any better. I think they’re all about the same. But then, I say that for almost all GUI programs and OSes.*
Although, I have heard good things about IntelliJ IDEA.
* I’m the kind of person who finds Blender3D easy to use after spending a bit of time with it.
In theory, Java can have higher performance than C++, because Java recompiles the binary code and optimizes every run. C++ compiles and optimizes just once. That is the reason adaptive compilers are faster in theory.
Now we wait a bit, until the Java designers catch up with theory. Guess what, the fastest and largest stock exchanges in the world are built in Java. Not C++. For instance, NASDAQ stock exchange is programmed in Java, and it has sub 100 microseconds latency, and throughput in million of orders per second.
The London Stock Exchange is built using C++ on Linux/Solaris, and LSE get 100 microseconds latency.
So, you might think that Java is crap, but it has world class leading performance, surpassing C++. And in the future, Java will surpass C++ because Java optimizes for every run.
Besides, Java is the most used language out there. And it is way simpler than C++. C++ is slower and bloated.
Because, as we all know, C++, being a compiled language, can never ever ever be written to compile into bytecode to be JITed at a later stage. That is why, due to your argument, the whole LLVM project ceases to exist from this very moment!
Furthermore, let’s all conflate a programming language with its implementation(s). That is why the C++ standard demands that C++ can only ever be compiled directly to native machine code. That is why, due to your argument, I suddenly have a massive brain hemorrhage, causing me to forget everything I’ve read in the C++ standard and articles available elsewhere!
What a completely scientific comparison. Because, as we all know, NASDAQ and LSE run the exact same hardware and middleware and the volume of data they receive is exactly the same. Not to mention that their management is also exactly the same, with exactly the same amount of money being spent on the hardware infrastructure at the exact same time. Not to mention that we are absolutely sure that the NASDAQ is written in 100% Java with no JNI or processing being distributed to compiled language subprocessors. By that same token, we thus know absolutely that LSE is written in 100% C++ with no processing being distributed to subprocessors written in Java or Python etc.
I’m glad we have two people defending Java so scientifically.
Because, as you’ve so elegantly demonstrated above, C++ can only ever be compiled to machine code. In fact, Bjarne Stroustrup himself has threatened to break the knee caps of all the LLVM developers.
Let’s also conveniently forget the fact that there exists other languages that aren’t Java but can be compiled to run in the JVM, and thus conveniently fail to realize that you’re actually arguing about JVM vs C++, which is not the same as Java vs C++.
Another gem of an argument from those who persist to not understand logic. Repeat after me:
popular != better;
That statement, I think, should compile in both C++ and Java, and perform optimally well.
Have you seen Java 7?
C++ is slower and bloated only when compared the a Java program that’s been running for a while. Not to mention the logical fallacies you made above. Hardly a fair (or logical) comparison when you compare a language with a JVM.
I won’t stop you comparing implementations of languages. You haven’t actually argued anything that compares the languages themselves.
———————————————–
Can I get someone who actually has a good grasp of logic, language design, engineering and the current and developing state of technology regarding language backends?
Sure, if C++ is compiled into bytecode and run on adaptively JIT, then C++ can also achieve Java performance. Never mind.
My point is that Java can be fast, if you know how to do it. Have I proved my point? Java can be very fast, and rival C++. So, how is Java bad and slow? It is the fastest in the world.
I work in this business and NASDAQ is completely built in Java. LSE is built in C++. If you dont believe me, confirm this with guys that work at NASDAQ or LSE.
Also, these stock exchanges use commodity x86 servers. No special hardware, no risc cpus, no mainframes, or whatever. Just ordinary x86 servers. Typically with 32GB RAM and dual hexcore cpus, or so. Nothing special. Confirm this with guys working in the exchange business if you dont believe me.
Still my point is; if you know what you are doing, then Java can be fastest in the world, and Java exchanges rival or surpass C++ exchanges. So, Java is fast. But that requires knowledge. For instance, how do cope with the garbage collector in Java? I know how to do that.
Please point to where I said anything about Java’s speed.
Java is bad in many other ways than speed.
Right. I believe you. Every single line of code in NASDAQ is Java, while every single line of code in LSE is C++. I’m also to believe that NASDAQ Java does not use any JNI or farms out to non-Java systems. So I assume, then, that the databases and backup solutions for NASDAQ are also written in 100% Java.
Yes, but how many? What is the parallel set up? What is the NETWORK hardware? What is the total setup?
The flaw in your argument is that you expect us to believe NASDAQ and the LSE are implemented in exactly the same way using the exact same algorithms, the only difference between the two being the language used.
If I’m not mistaken, the NASDAQ and LSE would be making upgrades and hot-swaps all the time. Do you really expect people to believe that these latency figures are static and directly reflects the languages being used?
Java can be fastest in the world? So you’re saying Java has surpassed Fortran in supercomputing? Not even I go so far as to say C++ is better than Fortran for speed.
Agreed, but speed is not one of the problems.
The important subsystem is the Matching Engine. It inserts incoming orders, and matches them to other orders. Then the matched deal is sent further to other subsystems to handle the administration. But the important thing is the Matcher, it needs to be fast with ultra low latency and extreme throughput. If not, then the stock exchange will be slow and the HFT firms and Algotrading firms will prefer to trade on another exchange.
The Matcher in NASDAQ is written in Java. There are many other subsystems, the clearing subsystems, the database, etc. But the critical part is the matcher. Much of NASDAQs critical parts is written in Java, but some parts are not. For instance the database.
It varies from system to system, but my point is:
Well, all the fastest stock exchange systems have a matcher that uses UDP, not TCP/IP. You can only achieve sub 100 microseconds with UDP. If you know how to do in another way, tell me, and I will introduce you to one of the largest exchanges in the world, and we will hire you, and you will become rich.
The algorithm to match orders are similar. Basically they are doing the same thing. It is like sorting numbers. In how many ways can you sort numbers? All exchanges are doing the same thing and therefore can be compared. If C++ gives lower latency than Java, then everybody switches to C++. If Mainframes give lower latency, then everybody switches to Mainframes.
No, they are not doing hot swaps and upgrades. In the Evening, the exchange closes and that is when you do upgrades, but that takes lot of testing. The exchanges are slowly going to continuous trading 24/7, but in the evening they are closed where back office and clearing work can take place.
Of course the latency varies. Typically the exchanges say something like: “95% of all incoming orders are matched in 100 microseconds, and 3% are matched in 150 microseconds, etc”. But that number is from the gateway to the matcher and back again, thus this number is interesting for co-location (where the trader has the server in the same building as the Matcher). For which we charge a lot.
No, Fortran and Assembler are of course faster. My point is: Java has not performance problems. Theoretically, Java can be faster than compiling once like C++ does.
Yes, and my point is that your point is completely irrelevant because it comes down to implementation of the language itself, which is not, in any logical sense, a part of the DEFINITION of a language.
C++ is not defined to be compiled to machine code once only. Neither is Java defined to be compiled to a JVM.
You may as well be arguing that a PostgreSQL server is faster than C++. It’s a completely meaningless comparison.
My point is relevant, because there are only a few ways to do a fast Matcher. All the matchers are built roughly the same.
For instance, let us talk about FPS games. They are built in C++, and have similar structure. A physics engine, graphics engine, etc. They are all very similar to each other. There are only a few ways to build a fast FPS game. Thus, you can compare between different games.
The same with stock exchanges. They are all similar, and you can compare between them. Now it turns out that the fastest stock exchanges are using Java or C++, on the same hardware, using the same network and routers. All exchanges use the same routes with the fastest performance, we use Arista routers which are among the fastest. I can not believe that other exchanges use slower routers, no, they use routers with similar performance as Arista. All exchanges use the fastest gear, or gear with similar performance.
There is no performance difference in performance between the gear. If one vendor was much faster, everyone would switch hardware. Now one vendor is called Arista and offers X performance. Another vendor is called Cisco and offers X performance. It does not matter which vendor an exchange use, as long as the vendors offer similar performance. If one vendor is faster, every exchange switch hardware.
All exchanges are using similar hardware, and still Java exchanges rival C++ exchanges. What does this prove? That Java is slow? No, it proves that Java can rival C++.
My point is this: Java can rival C++. If C++ were faster, then every stock exchange would switch to C++. All the exchanges are built roughly similarly, and offer similar performance. Now the fastest exchanges are 100 microseconds. All of them. No exchange has 50 microseconds. If one exchange would have 50 microseconds, everyone would rebuild their solution to match 50 microseconds. Just look at the numbers for the fastest exchange, they are the same.
You still don’t get it. The problems you mention are simply not Java specific of C++ specific. Therefore, completely irrelevant to the statement that Java is a crap language.
The statement “Java is a crap language” does not equal the statement “JIT code is crap compared to compiled code”.
You are arguing a completely nonexistent argument in this thread.
Go ahead and patent the language, just honestly tell people whether the language is a proprietary or open. Google could then make a reasonable choice whether or not to use the language. GPLing Java was a pretty clear statement that Sun meant for it to be an open language.
What I hate is companies deceptively claiming openness, but then when you get down to all of the nitpicky details, the language is actually closed. Kind of like Rambus and their patents.
If Google had known that Oracle was going to behave like this we’d probably all be using Python right now.
Oh, for the love of Mike, did you have to suggest that possibility? I’d be developing Android apps all day long if Python was the language of choice there!
If people already complain about Android vs iOS speed, then they would be really fast.
could you not now ? use Jython, maybe!!
No Jython won’t work, as its not a real Java virtual machine running java bytecode. The language starts off Java like, but is compiled into Dalvik byte code, which is different and not compatible with JVM bytecode.
You can use Python with some severe limitations with the Android Scripting engine.
http://code.google.com/p/android-scripting/
Its slow, crash prone, and not documented very well. But other than that its pretty cool.
Edited 2012-05-01 16:46 UTC
The GPL point is critical to understanding why Google didn’t get a license from Sun. It was because if they had then Android would have had to have been equally open and released under a similar GPL license and Google had no intention of making Android open, just free.
Google could afford to give Android away for free as it did not undermine their business model but they could not make it open otherwise they risked losing the lever they were seeking to force handset makers to bake in Google services. Their actions utterly perverted the notion of open source and they knew it but they also knew if the kept talking about Android being open and if they gave it away for free they would fool enough people into thinking it was open.
How distorted is your reality?
http://en.wikipedia.org/wiki/Android_(operating_system)
“Android is a Linux-based operating system for mobile devices such as smartphones and tablet computers. It is developed by the Open Handset Alliance, led by Google, and other companies.”
Android is based on Linux, which is already under GPL.
Do you ever write anything based on logic and facts?
Adroid has many pieces. Some of those pieces are GPL’d and some aren’t. A lot of Android is GPL but not all of it.
No. Sun was of course free to license Java any number of ways it wished. Just because you the original and only contribute to a code base license it to anyone under GPL, it doesn’t mean you can’t also license it to someone else under a different licence that doesn’t require modification sharing.
There have been a number of companies that have pursued this line of thinking, creating a version of their application under GPL, and another version for sale ( presumably with more features) under a different license that did not grant the user any distribution and or modification rights.
Kind of a mistake to use Java. It’s one of a few similar languages, C++ IMHO still is a crown jewl of this kind and maybe would be a better choice (or at least “Javaised” version of it that runs in a sandbox / VM).
Btw we all know that Java was built inspired by C++, but Sun didn’t pay a dime to the Soustrup. Therefore they should either compete in the market or accept that they did not use their chance to rule it (with J2ME) and that game is over (no lawsuit is gonna bring it back). Kind of similar to Microsoft and Windows Mobile story.
Its not only Java the programming language, but, also Java framework, (A.P.I., J.V.M. derivative).
My 2 cents its that Oracle will loose the charge of “Java Programming Language”, but, win the charge of “Java A.P.I.”, which to be honest, hope it won’t.
There was another third charge OracleSun want to add to the trial, but, the judge dissmissed. Don’t be surprised, after this trial is over, another trial with that missing concept, plus, anothers, may follow.
I don’t know, this trial ain’t looking too god for Oracle. Their damage claims have already been bitch slapped down into the ground.
It’s too easy to prove otherwise. Oracle’s argument is that they have copyright over them because it takes effort to create.
If such was the case, then competition in the industry should simply not exist because making a product that is a just a copy of another that took a lot of effort to design and create would also be illegal. It’s ridiculous.
Oracle strategy on Friday I think comes down more to the fact that they were totally on panic after J. Swchartz declaration and needed to urgently move somewhere else.
I read there is a J.V.M. mobile version, and maybe some cellphones or smartphones with it. But, where is the Android version of OracleSun ?
With the “hype”, “developer community”, “marketing”, whatever. Oracle may be right as a copyright or patent holder, but, Google make the whole stuff work.
Even, if Google, could replace the whole stuff, or, OracleSun could bring its own Android equivalent, it will take time, and the I.T. industry may be affected by the result of this trial …
Some people are waaay too emotionally vested in technology corporations, which is a really odd behavior, to appreciate the context of trials like these.
We’re seeing two business models clashing: Oracle works in terms of services and licenses/contracts, whereas Google is basically a gigantic ad agency.
SUN did not have the resources to really push and develop ME, which is why they looked the other way with Android. Oracle now sees that large android install base as a potentially huge source of revenue via licenses.
This is, both corps are really full of bat guano and deserve each other…
Edited 2012-04-30 21:01 UTC
Gosling defending software patents? I’m surprised to a degree.
However, the developer community was really not happy with Sun’s response, or lack thereof, to iOS and the new mobile world.
What I will concede, is that Google should be forced to return Android’s Java libraries into the realm of Java proper. Being stuck with Java 5 is not what I would like to have as a result of this suit. However, Android’s libraries should become the basis for the new mobile Java.
JavaFX is promising, but Android is already there.
However, not on the basis of copyrightability of API. But something mutually beneficial for Oracle, Android(not necessarily Google) and Java community.
+1 (cant vote, have commented)
Sun let Java stagnate, JavaME is awful (and fragmented on a per^aEURphone basis), and Android has been a breath of fresh air to code for. Not perfect but a darn sight better than anything we had on market previously.
Didn’t MS already lose this case back in the late 90s?
They stopped microsoft because they also used the “java” trademark with a slightly incompatible fork.
Google is another story, they use a different name and are advertising java API/language compatibility.
Maybe they should have rolled with Python.
You’re right, it was the name that got MS. The details were fuzzy, and I didn’t care enough to google it.
So, Linux slimed every Unix vendor out there, building a pseudo compatible Posix/Unix clone (without certification and without being called Unix) and still Sun supported it and they had a Linux distribution. Now the same is done with a Java clone not called Java and it is wrong.
I have much respect for Mr Gosling, but stop with feelings and think. I know he is just mad because Sun tanked, but it was their own demise by not building a competitive mobile Java solution
Edited 2012-04-30 21:19 UTC
This whole scenario is symbiosis bred in Hell. I love Android and everything it stands for, but Java? Really?
I know using Java initially solved the “here and now” of getting Android into the hands of coders more quickly, but surely there were other alternatives to consider even then.
It’s bad enough that Microsoft leaches licensing fees from the handset manufacturers for the use of Android, but Oracle drawing from the same well is intolerable. I absolutely despise this modern business tactic.
I don’t really like Java based Android as a mobile solution. It slowed down normal mobile Linux in reality.
Fact check:
1) Sun created Java.
2) Java is the most used programming language out there. That also makes it the most missused, but that’s not a fault of the programming language.
3) Because of (2), Java suffers for some degree of fragmentation and there is no single and good-enough API for everything, regardless how much they tried. IBM had to be idiots and create SWT when Swing was already available. Sun had to be idiots and make AWT crappy, which led to the creation of both Swing and SWT and the examples can continue.
4) Sun did try to address this and actively pushed a single set of APIs.
5) Sun tried to do the right thing and make Java free software
6) Sun stopped Microsoft from irreparably forking Java into a completely incompatible mess.
Until now, it’s clear that Java was too big for Sun to control. They did try nevertheless and did an impressive job in a lot of aspects. Furthermore, I’m quite sympathetic to Sun’s position.
Now let’s scroll forward to Google. Here comes Google. They look at the landscape and notice the following:
1) There are a lot of Java programmers out there, including for mobile devices.
2) There are no decent (simple, unique, clear, sufficient) APIs in Java that are suitable for a modern Smart Phone.
J2ME (Java 2 Mobile Edition) was already available, but it was designed for classic phones, not really suitable for the new iPhone-like devices. Instead of proposing a new Java initiative that could be called J2SPE (Java 2 Smart Phone Edition) through the appropriate channels (like the JSRs), they decided to fork it.
Now let’s look at this from Sun’s perspective:
We created this and spent billions and incredible talent to create this. We’ve made it work in smart-cards, mobile phones, cars, blu-ray players, web browsers, servers, etc.
Now Google comes here and copies most of our work, but in a completely incompatible manner, thus defying the universal principle of Java that we fought to keep.
Given that perspective, I can see how Sun felt screwed over by Google, basically because they were. For PR reasons they didn’t act on it, but they should have. Oracle came with some ridiculous statements, but the facts of the case are true. Simply put: they created Java as a universal solution and Google made an incompatible fork, which beats the whole universal solution idea. If Google really had ethics, they would have created their own programming language or used one that is not tied to it’s APIs like Java or pushed the android profile and APIs through the JSR and made them part of Java.
But not smartphones.
Not incompatible, but rather uncontrollable. Android is vastly more compatible with Java(mostly because it’s plain Java up to a certain point), than Java RT and Java ME ever were.
If it was a “completely incompatible manner”, we wouldn’t be having this discussion. The fact is, the Java language used on Android is 99.99% compatible with the Sun/Oracle version, such that most third party libraries can simply be recompiled to the different bytecode format, no source changes necessary.
Java is a vm bytecode format, a programming language, an API. They kept just the programming language. I agree that a new API would have been necessary, but that could have been made under the big Java umbrella.
And this confusion is something that Oracle quietly used in the trial. So, what is Java? It’s whatever Sun (now Oracle) wants it to be at the moment. Kind of like how Florian Mueller is a {patent expert|lawyer|lobbyist|paid flack}, whichever is most advantageous in a particular context.
the java creator is a douche, so