"For example, Microsoft technologies have far more dominance in the USA than in Europe."
where did you get that idea?
By regularly researching the usages of a range of technologies.
i would say there is no difference between US and EU in MS usage.
You are wrong. There are differences in many areas.
don't be fooled by those few reports of cities switching to linux, in percentage it means nothing.
I was talking about far more that just the use of Linux vs Microsoft on the desktop. It is a wider range of technologies. For example,.NET is much less used as a development platform in Europe than in the USA.
Some areas may not have much effect but there are significant ties between the others and Microsoft has often exploited this fact to leverage from one to the other.
One of the reasons Linux is more viable as a corporate desktop now is the past success of Linux in the corporate server market.
I largely agree, although I think the degree of linkage has been hugely overstressed. For example, the primary reason that Linux is viable as a corporate desktop is that there is Linux software that can deal reasonably well with Microsoft formats and a wide range of networked resources, including those presented by Windows servers. My view is that the success of Linux is not about linkage - it is about integration. In the same way, Linux servers can in many ways transparently replace Microsoft servers.
It is Microsoft that is trying to impose linkage, and only with moderate success - although it dominates the desktop it has not had much growth in its share of the server market for years.
But anyway, my point was not that there was no linkage, just not there is no single battleground.
What's to say that Linux won't take over in all those areas that you mentioned? You're assuming incorrectly that it can only "win" in one area.
I'm not assuming that at all. In fact my view is that Linux is indeed likely to win out in many if not most areas. My point is that any statement about a single 'battleground' either in an area of IT or geographically, is far too simplistic.
That's what Europeans said about America a couple hundred years ago. And witness how the economy of America overtook that of Europe for many decades. It happened once, and it may very well happen again. The upstart will overtake the existing economies.
Well, yes. That is reasonable. But that was not what your original post said.
You said "Once the Chinese market has matured, investors will think of American and the EU as they today think of Luxembourg and Jamaica."
This implies that China will reduce America and the EU to total insignificance. A very extreme view without much foundation.
The Chinese market will be the decisive battle ground between Linux and Windows. Indeed, whoever manages to become the leader in that market will soon become the world leader. Why is that? Because the Chinese market has the potential to completely dwarf both the American and European markets.
This doesn't make any sense at all.
Firstly, there is no single battleground between Linux and Windows. There are a number of separate battlegrounds: mobile devices, embedded systems, home desktops, corporate workstations, small servers, mid-range servers, enterprise servers, e-mail servers etc. Winning or losing in any one of these may not have much of an impact in any other.
Secondly, what happens in one area of the world in terms of OS dominance does not imply or force success elsewhere. For example, Microsoft technologies have far more dominance in the USA than in Europe.
Thirdly, there is a huge and growing market that has a tendency to appreciate open source - India.
So, the idea of there being a 'decisive battleground', and this being China, does not make sense.
Once the Chinese market has matured, investors will think of American and the EU as they today think of Luxembourg and Jamaica.
Extremely unlikely. America and the EU are far too large and skill & resource-rich by comparison.
Yeah, they do that after you supply a bunch of xml to configure them. ActiveRecord requires zero configuration if you follow the conventions.
Of course I don't have to supply a bunch of XML. I use a decent ORM (Kodo) with tools that do that for me automatically with a single command.
If you want the db naming abstracted, add a function to the model and don't rename it. It hasn't already been defined in a config file somewhere, so you're not repeating yourself.
Why should I have to add a function to the model? This is the thing I really don't get about RoR. The attitude that if things don't work you can always hack in something yourself. As if this is an advantage. To me it illustrates something that is broke.
This isn't primitive, it's a design decision. Hell, I don't even think I've ever renamed a column outside of the early design phase.
You may not have. Others have. I have. I prefer a modern ORM that can cope easily (even automatically!) with this. There is no getting away from leaving out something complex to implement that other products include is definitely primitive, design decision or not.
This is bullshit nitpickery. You were just talking about your other preferred ORM(s), so you know how they work. Create an abstract api that maps to a subset of SQL functionality, then deal with the DB-specific weirdness on a driver-specific level.
It is not nit-pickery. Moving a complex schema which uses rich SQL from something like SQL Server to Oracle can me a substantial exercise. Many companies don't have the time or expense, so stick with legacy systems and suffer as a result. With a good ORM I don't have to deal with the DB-specific weirdness: someone else has already done it for me, and done it well.
No, they don't work 100% of the time on all DBs, but they are about a billion times more portable than concatinating strings to form queries. There's a reason the ORMs have become prominent: they work, and they suck less than hand-hacking everything.
You need to look at how systems like JDO 2.0 work before you comment. There is no contatenating strings and there is no hand-hacking. You use a rich and full-featured query language and that is automatically translated to the rich-and full-featured query language of the database you are using, taking into account all the dialect differences.
Which means nothing for web servers. Unless you recommend running J2ME on a web server?
It means that there is nothing intrinsically bulky about Java programs. Java code can be very effectively shared between requests and threads.
still, a few 100k is a _lot_, many embedded devices have only a few kb.
And how does that relate to web servers? I suppose you must be referring to low memory devices like those that match the JavaCard specification - which deals with apps running in just a few kb of memory on smartcards. Java is specifically being used in mobile and embedded situations because it's bytecode is more compact than many native instruction sets.
java's niche keeps shrinking. first it was 'take over the world' then 'take over the desktop' then 'take over light clients' then 'take over appliances' then 'take over mobile devices'. well, it hasnt really taken over anything yet, despite over a decade of hype. it keeps getting forced into ever smaller niches. the fragmentation of java into mobile/enterprise/etc shows....
This has to be one of the most distorted readings of the IT market I have ever read.
Java is dominant and growing in the server market. It is the de-facto standard for server-side development (which means more than just scripting web pages!). If you don't believe me, just check the job openings for different languages. It is now the de-facto standard for mobile device development (it isn't easy to find a mobile phone that doesn't run it).
Java is expanding into new areas all the time. In the past couple of years it has started to become widely used in real-time control, aviation etc: Boeing gave a major presentation of Java-based robotic aircraft technology a few months ago. It is also now widely used in the automotive industry. If you drive a new BMW it is likely that you are using Java.
Java hasn't fragmented into mobile/standard/enterprise at all. There are only two divisions: standard and mobile. Mobile is simply a reduced VM + libraries for very low memory environments. The only difference between standard and enterprise is the libraries you include. That is all.
theyre just now coming to grips with the fundamental problems of java that they've been denying for so long.
No. It is exactly the opposite. They have been working at removing problems that Java has had in the past, giving it reducted, size, hugely improved performance, reliable multi-threading, and garbage collection mechanisms which are controllable enough for highly-reliable real-time work.
I'm from mostly a Java background and was trying to decide if I should play a bit with Ruby or PHP, but Ruby on Rails looks more interesting to me at this time.
It is interesting, but takes shortcuts that can lead potentially to future problems. For example, with Rails you define your data model in the actual database. This is fine until you find your client wants another database or major changes to the schema. Dealing with this using Rails can be done, but it can be awkward. Java has libraries and APIs like Hibernate, JDO 2.0 and EJB 3.0 that allow you to define your data model as Java classes (far easier to keep track of) and easily write code that does not care what database you are on. Sounds like a better and safer way to develop to me.
Actually, it's already happened. Sun is getting widely dumped in favor of RedHat/x86, who is seen as an top-tier enterprise vendor in Sun's traditional strongholds.
Widely dumped? Dumped in some areas, yes, but not widely dumped. Solaris sales have certainly dropped. In the first quarter of this year their UNIX sales dropped by around 5%. I think the phrase 'getting widely dumped' needs better evidence than that.
If a column name changes, you can just add a function to the model under the old name. Hell, you can do that beforehand if you actually want that level of indirection - nobody is stopping you.
The thing is that mature Object/Relational systems do this kind of thing already. Why should I have to bother to downgrade to a system where portability has to be hand-coded? Seems primitive to me.
Rails can script out all your schema changes and fire them off repeatably via Rake in a DB-agnostic manner.
I would be interested to know what DB-agnostic means. Having been dealing with relational databases for 20 years, I don't think such a thing exists.
Tell me, now, which one of these things is XML? One of them is human-readable, the other is not. But they're both valid SVG, which is XML.
One is XML with embedded binary data (from non-XML formats), probably in some MIME format.
Yeah, sure. "Cleanly extensible" is the requirement for the step after "embrace".
No. Because what ever is added must not break the original DTD or schema. You can 'embrace' all you like but it won't and can't destroy the use of the XML in other software.
Unfortunately, I think it will take a site having sustained hits around 100 conns/sec to prove to certain people that you can scale RoR, and I know of none that exist today.
Well, there are large banks, Stock markets, Airlines, electronic trading systems....
RoR won't scale to a high connection rate for transactional systems (especially where you need to write). The reason is that almost no framework does - all the really high-performance ones usually contain custom code and some high-level caches to allow clustering and to keep stuff away from the database. Ruby on Rails simply isn't designed to scale this much.
If your column naming doesnt follow the conventions, then you can just override the convention in the model definition.
The problem with RoR is not that it doesn't map well to legacy schemas, it is that it can be very fiddly to deal with changing schemas, as this can lead to dramatic (and automatic) changes to the Ruby code.
Object Graphs is an alternative to ActiveRecord that has quite flexible support for mapping legacy schemas to your objects. Nitro itself looks like a nice alternative to Rails too, but you can mix and match if you feel like it.
But then the system isn't RoR!
If you have to make Ruby on Rails NOT Ruby on Rails in order to deal with these issues, this clearly illustrates the limitations.
Rails can automatically create a full set of CRUD (Create, Retrieve, Update, and Delete) operations and views on any database table.
Yes, but then what? Very unwisely, Rails by default uses the database as the place where data objects are defined, rather than as Ruby code. This means it can be a significant exercise to subsequently change the database in significant ways, and moving to another database vendor can be a problem (where column names may have to change).
Other mature ORMs use a mapping layer and have the data objects defined as code. This means that database independence can be very good, and it means that code can be to some extent isolated from changes in the database schema.
OK, first things first; let's have a little lesson on what XML is. XML is not really that big a deal. All it means really is that the less-than and more-than signs are reserved symbols; one writes constructs such as..... to indicate a bounded block of type foo, or to indicate a single instance of type bar. The meanings of different foo and bar are what constitute a schema.
XML is FAR more than that, and it is a big deal.
XML is a standard, so that users and developers know what they are dealing with.
XML is designed to be human-readable so that data should not be 'lost' in the middle of proprietary binary formats where the software to read them has been lost.
XML is designed to be cleanly extensible so that new tags and structure can be added without losing the meaning of what is there, and without breaking software that relies on the existing tags and structure.
XML is optionally validatable so that the integrity of the information can be checked.
XML is designed to easily handle internationalisation.
The HTML used for web pages is actually just a bastardised dialect of XML. End of lesson.
HTML was based on SGML syntax. It has nothing to do with XML. XML was not around until the mid 90's.
Maybe you should find an example where JAVA has replaced OpenGL for graphics output, and then you would have a comparable argument, until then. Bzzz....
here is an example:
Swerve client.
It is a 3D engine for mobile devices. It implements a Java standard for mobile 3D (M3G). There are two versions: OpenGL accelerated, and a Java-software-only version.
If the XML Schema for it is published, why can't I write a simple XSLT to convert it to some other format? (E.g., to DocBook, or OpenDocument, or simply to HTML.) Or can't I run it through Xerces/Saxon/libxml/whatever and extract the data the old fashioned way? What concrete problems would I be looking at in that scenario?.... So wouldn't that count as a reason to stay with MS Office, then? Because then it wouldn't matter how much I think MS's schema sucks or not, it's a given.
You could do the work with XSLT, and it would work.. for now. The problem (as anyone who has used Microsoft products for at least a decade will know) is that Microsoft have a nasty habit of not always being compatible with Microsoft. There were several Office upgrades in the 90s that broke old files (anyone remember Access 2 - Access 95?).
No offense, but that is not the current.NET technologies that developers like myself are using, nor the technologies they are being used in Vista, nor are these even the.NET technologies that are being used on the XBox 360.
Well why not actually download the benchmarks and try them, and report the results?
The benchmarks are showing both Java and.NET being fast and approaching C++ speed.
If you are suggesting that.NET is much faster than Java, you are also, as a consequence, implying that.NET is much faster than C++. Sorry, don't believe it.
Part of the DirectX foundations and 'video' access itself is writeen in Managed.NET, This is NOT.NET just calling DirectX, but.NET is a part of what.NET is build with.
Details?
Using OpenGL or DirectX from any language does not mean the language itself is fast. I could actually harness DirectX from a very simple Visual Basic application, and do some incredible game processsing, does this mean Visual Basic is the best performaning development environment also?
No. But 3D stuff like quake involved a lot more than just OpenGL and DirectX. Those are simply the final stage of presentation. Have you seen attempts to write such games using a slow language, even with OpenGL beneath? I have.
Part of the DirectX foundations and 'video' access itself is writeen in Managed.NET, This is NOT.NET just calling DirectX, but.NET is a part of what.NET is build with.
I would be very interested to read some documentation about this.
Maybe you should find an example where JAVA has replaced OpenGL for graphics output, and then you would have a comparable argument, until then. Bzzz....
Maybe you should find an example where high-performance graphics primitives on a video card are written in.NET. Until then, Bzzz...
So far there is not the slightest evidence that.NET is any faster than Java. It was posted that there were no comparing benchmarks. I showed them. It was posted that Java was not used for 3D games. I posted an example.
Benchmarks! Wooo! So now we know that Java can run benchmarks and example programs really fast.
Actually, those aren't just benchmarks. They are code that has been used for decades because they illustrate real use. The numerical methods they test are used in thousands of applications that require high-performance numerics and data structure handling.
That is why Linpack isn't just any old benchmark - it is respected. It is used to rank the performance of supercomputers.
That Java is up to running Linpack at speed is a significant and unquestionable indication of high performance.
Now let's look at the real world instead. Why not download Azureus or AEJEE and compare them to similar apps that are written in native code?
I have tried AEJEE. I have to admit it is pretty awful! The GUI is slow. It looks like some sort of dreadful GNOME emulation.
However, why not try another real-world app - JEdit. Under Java 1.5 it starts up fast and has a GUI speed that no-one can complain about.
I use Java GUI apps (NetBeans) for my development. I would be the first to say that it was slow and barely usable many years ago, but now it is fast and sleek.
I would be interested in what you mean by native code? C? C++? They are translated to native code before they run. Java? That is native code - translated to native code as it runs (this cached native code is then re-used). I guess you must mean hand-coded assembler... well who does that these days?
None currently exist my friend, since the current version of.Net technology's NDA prohibits benchmarking. If you magically have some, then I'm sure a lawyer would like to talk to you. 8P
Well get the lawyers out. Here are some Java vs. Net bencharks from a year ago:
How about this challenge since you think what I said was nonesense, write us all a cute java application that can render full scenes in 3D in realtime at near toy story quality. Then I will say, yep I was wrong,.NET isn't the only managed development environment that can do this type of performance.
Actually I would be happy to see a version of Solitaire in Java that the cards moving around the screen didn't drop a 3Ghz P4 to a crawl...
Perhaps you would like to back this up by giving the name of the specific solitaire program so we can test it and check the processor use while moving cards?
"For example, Microsoft technologies have far more dominance in the USA than in Europe."
.NET is much less used as a development platform in Europe than in the USA.
where did you get that idea?
By regularly researching the usages of a range of technologies.
i would say there is no difference between US and EU in MS usage.
You are wrong. There are differences in many areas.
don't be fooled by those few reports of cities switching to linux, in percentage it means nothing.
I was talking about far more that just the use of Linux vs Microsoft on the desktop. It is a wider range of technologies. For example,
Some areas may not have much effect but there are significant ties between the others and Microsoft has often exploited this fact to leverage from one to the other.
One of the reasons Linux is more viable as a corporate desktop now is the past success of Linux in the corporate server market.
I largely agree, although I think the degree of linkage has been hugely overstressed. For example, the primary reason that Linux is viable as a corporate desktop is that there is Linux software that can deal reasonably well with Microsoft formats and a wide range of networked resources, including those presented by Windows servers. My view is that the success of Linux is not about linkage - it is about integration. In the same way, Linux servers can in many ways transparently replace Microsoft servers.
It is Microsoft that is trying to impose linkage, and only with moderate success - although it dominates the desktop it has not had much growth in its share of the server market for years.
But anyway, my point was not that there was no linkage, just not there is no single battleground.
What's to say that Linux won't take over in all those areas that you mentioned? You're assuming incorrectly that it can only "win" in one area.
I'm not assuming that at all. In fact my view is that Linux is indeed likely to win out in many if not most areas. My point is that any statement about a single 'battleground' either in an area of IT or geographically, is far too simplistic.
That's what Europeans said about America a couple hundred years ago. And witness how the economy of America overtook that of Europe for many decades. It happened once, and it may very well happen again. The upstart will overtake the existing economies.
Well, yes. That is reasonable. But that was not what your original post said.
You said "Once the Chinese market has matured, investors will think of American and the EU as they today think of Luxembourg and Jamaica."
This implies that China will reduce America and the EU to total insignificance. A very extreme view without much foundation.
The Chinese market will be the decisive battle ground between Linux and Windows. Indeed, whoever manages to become the leader in that market will soon become the world leader. Why is that? Because the Chinese market has the potential to completely dwarf both the American and European markets.
This doesn't make any sense at all.
Firstly, there is no single battleground between Linux and Windows. There are a number of separate battlegrounds: mobile devices, embedded systems, home desktops, corporate workstations, small servers, mid-range servers, enterprise servers, e-mail servers etc. Winning or losing in any one of these may not have much of an impact in any other.
Secondly, what happens in one area of the world in terms of OS dominance does not imply or force success elsewhere. For example, Microsoft technologies have far more dominance in the USA than in Europe.
Thirdly, there is a huge and growing market that has a tendency to appreciate open source - India.
So, the idea of there being a 'decisive battleground', and this being China, does not make sense.
Once the Chinese market has matured, investors will think of American and the EU as they today think of Luxembourg and Jamaica.
Extremely unlikely. America and the EU are far too large and skill & resource-rich by comparison.
Yeah, they do that after you supply a bunch of xml to configure them. ActiveRecord requires zero configuration if you follow the conventions.
Of course I don't have to supply a bunch of XML. I use a decent ORM (Kodo) with tools that do that for me automatically with a single command.
If you want the db naming abstracted, add a function to the model and don't rename it. It hasn't already been defined in a config file somewhere, so you're not repeating yourself.
Why should I have to add a function to the model? This is the thing I really don't get about RoR. The attitude that if things don't work you can always hack in something yourself. As if this is an advantage. To me it illustrates something that is broke.
This isn't primitive, it's a design decision. Hell, I don't even think I've ever renamed a column outside of the early design phase.
You may not have. Others have. I have. I prefer a modern ORM that can cope easily (even automatically!) with this. There is no getting away from leaving out something complex to implement that other products include is definitely primitive, design decision or not.
This is bullshit nitpickery. You were just talking about your other preferred ORM(s), so you know how they work. Create an abstract api that maps to a subset of SQL functionality, then deal with the DB-specific weirdness on a driver-specific level.
It is not nit-pickery. Moving a complex schema which uses rich SQL from something like SQL Server to Oracle can me a substantial exercise. Many companies don't have the time or expense, so stick with legacy systems and suffer as a result. With a good ORM I don't have to deal with the DB-specific weirdness: someone else has already done it for me, and done it well.
No, they don't work 100% of the time on all DBs, but they are about a billion times more portable than concatinating strings to form queries. There's a reason the ORMs have become prominent: they work, and they suck less than hand-hacking everything.
You need to look at how systems like JDO 2.0 work before you comment. There is no contatenating strings and there is no hand-hacking. You use a rich and full-featured query language and that is automatically translated to the rich-and full-featured query language of the database you are using, taking into account all the dialect differences.
Which means nothing for web servers. Unless you recommend running J2ME on a web server?
....
It means that there is nothing intrinsically bulky about Java programs. Java code can be very effectively shared between requests and threads.
still, a few 100k is a _lot_, many embedded devices have only a few kb.
And how does that relate to web servers? I suppose you must be referring to low memory devices like those that match the JavaCard specification - which deals with apps running in just a few kb of memory on smartcards. Java is specifically being used in mobile and embedded situations because it's bytecode is more compact than many native instruction sets.
java's niche keeps shrinking. first it was 'take over the world' then 'take over the desktop' then 'take over light clients' then 'take over appliances' then 'take over mobile devices'. well, it hasnt really taken over anything yet, despite over a decade of hype. it keeps getting forced into ever smaller niches. the fragmentation of java into mobile/enterprise/etc shows
This has to be one of the most distorted readings of the IT market I have ever read.
Java is dominant and growing in the server market. It is the de-facto standard for server-side development (which means more than just scripting web pages!). If you don't believe me, just check the job openings for different languages. It is now the de-facto standard for mobile device development (it isn't easy to find a mobile phone that doesn't run it).
Java is expanding into new areas all the time. In the past couple of years it has started to become widely used in real-time control, aviation etc: Boeing gave a major presentation of Java-based robotic aircraft technology a few months ago. It is also now widely used in the automotive industry. If you drive a new BMW it is likely that you are using Java.
Java hasn't fragmented into mobile/standard/enterprise at all. There are only two divisions: standard and mobile. Mobile is simply a reduced VM + libraries for very low memory environments. The only difference between standard and enterprise is the libraries you include. That is all.
theyre just now coming to grips with the fundamental problems of java that they've been denying for so long.
No. It is exactly the opposite. They have been working at removing problems that Java has had in the past, giving it reducted, size, hugely improved performance, reliable multi-threading, and garbage collection mechanisms which are controllable enough for highly-reliable real-time work.
Java is not slow in server-side, it is just slow on desktop with Swing
It was slow on desktop with Swing. There have been major speed-ups in the Swing implementation shipped with Java 1.4.x and 1.5.x.
I'm from mostly a Java background and was trying to decide if I should play a bit with Ruby or PHP, but Ruby on Rails looks more interesting to me at this time.
It is interesting, but takes shortcuts that can lead potentially to future problems. For example, with Rails you define your data model in the actual database. This is fine until you find your client wants another database or major changes to the schema. Dealing with this using Rails can be done, but it can be awkward. Java has libraries and APIs like Hibernate, JDO 2.0 and EJB 3.0 that allow you to define your data model as Java classes (far easier to keep track of) and easily write code that does not care what database you are on. Sounds like a better and safer way to develop to me.
You're pretty much correct. PHP is a lot closer to JSP or ASP than Java,
Eh? JSP is Java. It is a standard part of J2EE!
Not a big fan of Java, slow,
No, especially not server side. Reaches within a few % of C++ speed in well-established benchmarks:
http://www.shudo.net/jit/perf/
bulky,
No. It can run within a few 100k on mobile devices. Non-GUI java apps can run in just a few MB.
not user friendly.
A vague term, which could mean anything.
Actually, it's already happened. Sun is getting widely dumped in favor of RedHat/x86, who is seen as an top-tier enterprise vendor in Sun's traditional strongholds.
Widely dumped? Dumped in some areas, yes, but not widely dumped. Solaris sales have certainly dropped. In the first quarter of this year their UNIX sales dropped by around 5%. I think the phrase 'getting widely dumped' needs better evidence than that.
If a column name changes, you can just add a function to the model under the old name. Hell, you can do that beforehand if you actually want that level of indirection - nobody is stopping you.
The thing is that mature Object/Relational systems do this kind of thing already. Why should I have to bother to downgrade to a system where portability has to be hand-coded? Seems primitive to me.
Rails can script out all your schema changes and fire them off repeatably via Rake in a DB-agnostic manner.
I would be interested to know what DB-agnostic means. Having been dealing with relational databases for 20 years, I don't think such a thing exists.
But if you pry into an exported SVG file, you'll find something more like this:
ahewkijrhoiuyh98y5r2h5rtoih30983yu03ujr 24u09jklasjf2@#%9u)90#%)(2%4390U2M5...
Tell me, now, which one of these things is XML? One of them is human-readable, the other is not. But they're both valid SVG, which is XML.
One is XML with embedded binary data (from non-XML formats), probably in some MIME format.
Yeah, sure. "Cleanly extensible" is the requirement for the step after "embrace".
No. Because what ever is added must not break the original DTD or schema. You can 'embrace' all you like but it won't and can't destroy the use of the XML in other software.
Unfortunately, I think it will take a site having sustained hits around 100 conns/sec to prove to certain people that you can scale RoR, and I know of none that exist today.
Well, there are large banks, Stock markets, Airlines, electronic trading systems....
RoR won't scale to a high connection rate for transactional systems (especially where you need to write). The reason is that almost no framework does - all the really high-performance ones usually contain custom code and some high-level caches to allow clustering and to keep stuff away from the database. Ruby on Rails simply isn't designed to scale this much.
All we know that 90% of projects doesn't need to be done in Java.
Nice to have such confidence.
Actually, if you need a *really* huge web-application, java isn't your choice too. Examples? Amazon, eBay, Google...
You have to be kidding! All these sites use a wide range of technologies, including Java. In fact the main system behind eBay is Java!
I think you need to research a little better.
If your column naming doesnt follow the conventions, then you can just override the convention in the model definition.
The problem with RoR is not that it doesn't map well to legacy schemas, it is that it can be very fiddly to deal with changing schemas, as this can lead to dramatic (and automatic) changes to the Ruby code.
Object Graphs is an alternative to ActiveRecord that has quite flexible support for mapping legacy schemas to your objects. Nitro itself looks like a nice alternative to Rails too, but you can mix and match if you feel like it.
But then the system isn't RoR!
If you have to make Ruby on Rails NOT Ruby on Rails in order to deal with these issues, this clearly illustrates the limitations.
Rails can automatically create a full set of CRUD (Create, Retrieve, Update, and Delete) operations and views on any database table.
Yes, but then what? Very unwisely, Rails by default uses the database as the place where data objects are defined, rather than as Ruby code. This means it can be a significant exercise to subsequently change the database in significant ways, and moving to another database vendor can be a problem (where column names may have to change).
Other mature ORMs use a mapping layer and have the data objects defined as code. This means that database independence can be very good, and it means that code can be to some extent isolated from changes in the database schema.
Still doesn't make it our fault for them happening.
So you are ignoring basic chemistry and physics and assuming that increasing CO2 level in the atmosphere by about 150% is going to have no effect?
Let the earth do what it wants to do, for cryin out loud.
Why? If we can change the environment for the better (while preserving biodiversity), what is wrong with that?
OK, first things first; let's have a little lesson on what XML is. XML is not really that big a deal. All it means really is that the less-than and more-than signs are reserved symbols; one writes constructs such as ..... to indicate a bounded block of type foo, or to indicate a single instance of type bar. The meanings of different foo and bar are what constitute a schema.
XML is FAR more than that, and it is a big deal.
XML is a standard, so that users and developers know what they are dealing with.
XML is designed to be human-readable so that data should not be 'lost' in the middle of proprietary binary formats where the software to read them has been lost.
XML is designed to be cleanly extensible so that new tags and structure can be added without losing the meaning of what is there, and without breaking software that relies on the existing tags and structure.
XML is optionally validatable so that the integrity of the information can be checked.
XML is designed to easily handle internationalisation.
The HTML used for web pages is actually just a bastardised dialect of XML. End of lesson.
HTML was based on SGML syntax. It has nothing to do with XML. XML was not around until the mid 90's.
Maybe you should find an example where JAVA has replaced OpenGL for graphics output, and then you would have a comparable argument, until then. Bzzz....
here is an example:
Swerve client.
It is a 3D engine for mobile devices. It implements a Java standard for mobile 3D (M3G). There are two versions: OpenGL accelerated, and a Java-software-only version.
If the XML Schema for it is published, why can't I write a simple XSLT to convert it to some other format? (E.g., to DocBook, or OpenDocument, or simply to HTML.) Or can't I run it through Xerces/Saxon/libxml/whatever and extract the data the old fashioned way? What concrete problems would I be looking at in that scenario? ....
So wouldn't that count as a reason to stay with MS Office, then? Because then it wouldn't matter how much I think MS's schema sucks or not, it's a given.
You could do the work with XSLT, and it would work.. for now. The problem (as anyone who has used Microsoft products for at least a decade will know) is that Microsoft have a nasty habit of not always being compatible with Microsoft. There were several Office upgrades in the 90s that broke old files (anyone remember Access 2 - Access 95?).
No offense, but that is not the current .NET technologies that developers like myself are using, nor the technologies they are being used in Vista, nor are these even the .NET technologies that are being used on the XBox 360.
.NET being fast and approaching C++ speed.
.NET is much faster than Java, you are also, as a consequence, implying that .NET is much faster than C++. Sorry, don't believe it.
.NET, This is NOT .NET just calling DirectX, but .NET is a part of what .NET is build with.
.NET, This is NOT .NET just calling DirectX, but .NET is a part of what .NET is build with.
.NET. Until then, Bzzz...
.NET is any faster than Java. It was posted that there were no comparing benchmarks. I showed them. It was posted that Java was not used for 3D games. I posted an example.
Well why not actually download the benchmarks and try them, and report the results?
The benchmarks are showing both Java and
If you are suggesting that
Part of the DirectX foundations and 'video' access itself is writeen in Managed
Details?
Using OpenGL or DirectX from any language does not mean the language itself is fast. I could actually harness DirectX from a very simple Visual Basic application, and do some incredible game processsing, does this mean Visual Basic is the best performaning development environment also?
No. But 3D stuff like quake involved a lot more than just OpenGL and DirectX. Those are simply the final stage of presentation. Have you seen attempts to write such games using a slow language, even with OpenGL beneath? I have.
Part of the DirectX foundations and 'video' access itself is writeen in Managed
I would be very interested to read some documentation about this.
Maybe you should find an example where JAVA has replaced OpenGL for graphics output, and then you would have a comparable argument, until then. Bzzz....
Maybe you should find an example where high-performance graphics primitives on a video card are written in
So far there is not the slightest evidence that
Benchmarks! Wooo! So now we know that Java can run benchmarks and example programs really fast.
Actually, those aren't just benchmarks. They are code that has been used for decades because they illustrate real use. The numerical methods they test are used in thousands of applications that require high-performance numerics and data structure handling.
That is why Linpack isn't just any old benchmark - it is respected. It is used to rank the performance of supercomputers.
http://www.top500.org/lists/linpack.php
That Java is up to running Linpack at speed is a significant and unquestionable indication of high performance.
Now let's look at the real world instead. Why not download Azureus or AEJEE and compare them to similar apps that are written in native code?
I have tried AEJEE. I have to admit it is pretty awful! The GUI is slow. It looks like some sort of dreadful GNOME emulation.
However, why not try another real-world app - JEdit. Under Java 1.5 it starts up fast and has a GUI speed that no-one can complain about.
I use Java GUI apps (NetBeans) for my development. I would be the first to say that it was slow and barely usable many years ago, but now it is fast and sleek.
I would be interested in what you mean by native code? C? C++? They are translated to native code before they run. Java? That is native code - translated to native code as it runs (this cached native code is then re-used). I guess you must mean hand-coded assembler... well who does that these days?
None currently exist my friend, since the current version of .Net technology's NDA prohibits benchmarking. If you magically have some, then I'm sure a lawyer would like to talk to you. 8P
.NET isn't the only managed development environment that can do this type of performance.
Well get the lawyers out. Here are some Java vs. Net bencharks from a year ago:
http://www.shudo.net/jit/perf/
How about this challenge since you think what I said was nonesense, write us all a cute java application that can render full scenes in 3D in realtime at near toy story quality. Then I will say, yep I was wrong,
Sorry I don't have time to write it myself, but here is one:
http://www.bytonic.de/html/jake2.html. A version of Quake in Java.
Actually I would be happy to see a version of Solitaire in Java that the cards moving around the screen didn't drop a 3Ghz P4 to a crawl...
Perhaps you would like to back this up by giving the name of the specific solitaire program so we can test it and check the processor use while moving cards?