C# and CLI Fast-tracked to ISO 83
jdfox writes "It wasn't that long ago that ECMA approved standardisation of Microsoft C# and the associated Common Language Infrastructure. Now they have used the "fast-track" agreement between ECMA and ISO to move ISO ratification forward quickly, according to this article on CNET. We should see ISO C# by January.
Maybe this will finally persuade Sun to take their leash off of Java."
Maybe this will finally persuade Sun to take their leash off of Java."
Re:Concerning some grammar (Score:5, Funny)
> construct above?
I suppose you mean:
Could someone please enlighten me with a grammatical explanation of the above-mentioned construct "off of"?
But while you're ending your sentences with prepositions while whining about perceived Crimes Of Grammar on a a tech blog, why not amuse yourself with this joke:
A Southerner stopped a stranger on the Harvard campus and asked, "Could you please tell me where the library is at?" The stranger responded, "Educated people never end their sentences with a preposition." The Southerner replied, "Could you please tell me where the library is at, asshole?"
Re:Concerning some grammar (Score:1)
Ceci n'est pas une réponse (Score:2)
More on da man Magritte here:
http://www.magritte.com/
http://www.asta.
There are many good reasons to visit Belgium, but Magritte and the beer are my two favourites.
And we care because... (Score:5, Insightful)
The whole thing is moot.
Re:And we care because... (Score:2, Interesting)
Re:And we care because... (Score:2)
Of course, MSFT isn't worried about C# being unportable...
Re:And we care because... (Score:4, Insightful)
As far as I know, one of the major complaints about Java is the fact that it isn't standardized by an outside party like ECMA or ISO, but by Sun itself, meaning developers have as much say in the Java standard as they do over MS's VB. (please let me know if i'm wrong about this).
personally, I've taken a look at C# and like it. of course MS claims it's more related to C++ thna Java, but C# has more in common with Java than anthing else.
I assume the reasoning behind the standardization is to compete with Java... MS hasn't really had its own enterprise-level language before this (the candidates would be VB, which IMHO sucks and forces you to stick with Windoze and C++ which doesn't mean you have to use VC++). personally I'm much more likely to use it if its standardized, because I know MS can't easily pull off an "upgrade" or change the EULA and break/change the language for their benefit.
of course, by the time C# is ISO standardized (assuming it will be) the MONO project [go-mono.org] should be well enough along to use C# seriously... of course since the languages are so similiar why not just use Java in the first place?
lots of questions, not many answers.
Re:And we care because... (Score:3, Insightful)
That's somewhat true from a pure language standpoint, but I think you'll find developing for the two environments to be *vastly* different in terms of all the little details that matter and can make life pleasant or a living hell. Whether you're making your life pleasant or hellish is a function of how much you have to swim against the current in your current organization to use one tool set or the other.
Surprise, surprise, this isn't a technical issue. Within the context of a corporate operational environment, it's a cultural issue.
I think Microsoft is correct in stating that language choice is no longer the most relevant problem in software development anymore (if it ever really was).
Re:And we care because... (Score:2, Insightful)
You'd chose
Superb development environment for much greater productivity. Perfectly integrated database, XML, source control, web page, middle tier, etc. etc. development
Well thought-out framework with all sorts of good stuff already done for you
ASP.NET WebForms--really a fantastic way to program web pages
Multiple languages in one project
Performance on the Windows platform
Re:And we care because... (Score:2)
In short, you choose J2EE in order to have a choice of what software you want to use within your business and how much you are willing to pay for it, what hardware (Intel, Sun, IBM) and operating systems (Linux, Windows, Solaris, AIX, OS/400) requirements you have, and what requirements you have on the performance (single Intel box to 64 CPU Sun box to IBM mainframe) and scalability of your application.
You make J2EE match your requirements rather than force yourself to match .NET requirements.
Re:And we care because... (Score:2)
pffft...
I need to build real solutions today, and I will not put my hopes on another "always-five-steps-behind" WINE-like project such as Mono or dotGNU. These two will never be able to compete.
Microsoft owns the library API's, plain and simple. And they are defining these by themselves, not through ECMA or ISO.
Re:And we care because... (Score:1)
> simple.
This isn't entirely true as a subset of the FCL is part of the CLI which is part of the ECMA standard. So bottom line is, to remain portable just stick to whats part of the ECMA standard and you're good to go.
In addition, C# includes a C/C++-like preprocessor. So you can also use the traditional preprocessor tricks to portable code as well.
Re:And we care because... (Score:1, Insightful)
As far as I know, one of the major complaints about Java is the fact that it isn't standardized by an outside party like ECMA or ISO, but by Sun itself, meaning developers have as much say in the Java standard as they do over MS's VB. (please let me know if i'm wrong about this).
Yes, you are wrong.
Java is standardized and evolved by the sun community process. Nearly every company having a market in enterprice Java is participating.
A lot of individual members are participating as well.
E.g. the new java compiler for jsr014, very likely the standard compiler distributed with Java 1.5, is written by Martin Odersky and his team.
A lot of standards around J2EE are heavy influenced by third parties. E.G. Appache Tomcat is now the official reference implementation of the Servlet API of J2EE.
JDO, the new way of persistance in Java is heavyly influenced by the major Database companies and the leading oo database companies like POET.
Best Regards,
angel'o'sphere
Sorry, I moderated this thread and thats why I post anonymous.
Re:And we care because... (Score:1, Offtopic)
all moderations undone. If I had used another computer they would persist, where is the sense in that?
angel'o'sphere
Re:And we care because... (Score:3, Insightful)
No, one of the major complaints about Java is that it continues to get more bloated. There are a few vocal OSS advocates who can't bear to have freely available software being though of as "free", because as everyone knows its more important to know how to make beer than to have some given to you.
Unfortunately, IMHO, Sun hasn't kept a tight enough leash on Java. It started with an excellent vision, but then let the "community" get in on the act and push for every more standards, without really considering the benefit.
Its very much like the SourceForge effect. Start a project, put some ideas on a web page, and wait for someone to do the work. The JCP has provided a lot of solutions by providing APIs to develop against, but there is no implementation.
Worse, the APIs are often poor and bloated as a result of a lack of proper domain understanding, and provision for any conceivable implementation.
Java and its developers would be better served by providing additional libraries where they are warranted - not standards - and leaving the market (or OSS) to fill in the gaps with components. It has done wonders in the Microsoft world.
Some cases in point: Apache's log4j and regexp packages are widely considered the de facto standards, and have been around since well before JDK 1.4 was in development. They are also considered technically superior to the functionality which has appeared in 1.4 as a result of the JCP.
In fact the JSR for regular expressions is reads like a child's christmas list, as it is part of the NIO request, and includes a desire for printf-style formatting.
Sun did an excellent job with the design of Java. Its a pity there are a bunch of wannabees who are too shortsighted to see the value of leaving the control of the language's development in the hands of technical experts, and providing or acquiring what they specifically need in their own back yard as components.
Re:And we care because... (Score:2)
You're wrong about this. For all of its flaws, the Java Community Process [jcp.org] allows anyone from a large corporation to a single unaffiliated individual to help chart the course of Java evolution. This is a far cry from MS's focus-group oriented evolution of the VB platform.
ISO's 7 layer OSI really beat non-std TCP/IP (Score:5, Funny)
De Juris standards don't mean squat. I'll take De facto every day.
Re:ISO's 7 layer OSI really beat non-std TCP/IP (Score:1)
Considering that Microsoft is spending megabucks on advertising .Net to PHBs (that 1 degree of separation bullshit), I'd say it's almost certain that C# and .Net will be de facto and de juris standards. Sad but true.
The only truly 7-layer implementation I've seen... (Score:3, Funny)
...is the Taco Bell 7-layer burrito. Every other network vendor has played games under the hood, collapsing some of the layers into one.
(That's actually a quote, but I can't recall who said it. And I'm too tired to google for it.)
ohmigood its true! (Score:2)
Quick, I gotta run for the border just to pass compliance testing...
What good is it (Score:1, Insightful)
Re:What good is it (Score:4, Insightful)
> don't want to waste my time on something that isn't marketable.
Ok, so you're saying that systems development jobs are more plentiful than general desktop app development? Which universe are you living in? This is regardless as to the merits of C#.
Re:What good is it (Score:2)
Ok, so you're saying that systems development jobs are more plentiful than general desktop app development? Which universe are you living in?
Sounds like The Real World to me. Relatively few companies actually write general purpose desktop applications, but almost every business in the world of any decent size employs in-house developers writing custom code that never sees general market exposure. I can get a job anywhere doing this kind of work. Well, that is, when the market turns around :-\
Or maybe we have a different understanding of the semantics of "system" or "systems developer". To me system does not just (or even most often) mean operating system.
Re:What good is it (Score:2)
I'm sorry but that's the traditional meaning of the term. If you list "systems programming" on your resume, most people would expect you to be able to write device drivers and such.
Re:What good is it (Score:2, Interesting)
Re:What good is it (Score:2, Interesting)
Re:What good is it (Score:3, Interesting)
Java: 961
C++: 827
C#: 118
C: 885 (also returns C++/C# matches... some want both, few want just C)
Java + C++: 381
I'll give you two guesses of why someone needs to know both Java and C++. (Hint, they aren't moving from Java to C++.)
C# has went from 0->118 in a few months. I think it's surpassed C already. You should have said
Java absolutely. C++ absolutely. C# soon enough. C not in another few months.
The programming community is moving to an object oriented philosophy, mostly because XP is common place and XP pretty much requires OOP.
Given monster.com isn't the all knowing oracle, but I think it does show a trend. In the end, there will be two options for high level languages: Java and
Why people ask for Java + C++ (Score:2)
Um... How many decent programmers do you think there are in the world? Quite a few, that's for sure, and many of them program in C, C++ or Java. Under the present circumstances, many of those are sitting in stable jobs, and their employers are keeping a stable staff, so there's not much going on in that market.
The only places the industry is really moving now are bad/unlucky people who've been hurt by the recession, and buzzwordites who follow wherever the hype takes them. Given this climate, it's not surprising that buzzwordy languages have lots of job offers, but that certainly doesn't make them mainstream, and is no guarantee that things will stay that way in the long term.
XP is commonplace? I've never seen a professional development company that uses it on a widespread basis. Some of the better guys have looked at it, and plenty of places have been implementing parts of what XP recommends since long before the hype. But it's hardly what I'd call mainstream, however much those who evangelise on its behalf might like to disagree.
As for OOP, if anything, I think the market is starting to realise that it isn't a panacea. Everyone and his brother has tried it, a lot have liked it more than what's gone before, but I'm waiting for some of the more recent developments in programming theory to hit the mainstream now, not for the next big OO revolution.
Re:Why people ask for Java + C++ (Score:2)
Embedded: J2ME is compiled directly to bytecode, there is no difference between C++ and Java. Java still allows a user to write a program, using a subset of the API's of Java, and run it on virtually all consumer, and most other platforms.
Applications: Processors are -> 3Ghz, RAM is cheaper than pizza and bear. Development costs will dictate the path. It's hard to argue with the hardware abstraction and the availability of free classes that go with Java. 9/10 programming in C++, my bugs and problems where with the subtle API differences between different systems. XP broke a good chunk of my program, and for no good reason. Wouldn't have happened if I were using Java.
The only place where C will remain prevailant for now is low-level systems programming. It's not likely anyone is going to write a kernel in Java (although with gcj and the like, it is possible).
You're arguement would have one believe that good programmers choose Java, but the jobs are mostly for C++/C. I don't buy that. Programmers choose the languages that are profitable and make sence to them. Companies choose languages with least TCO. If a project is easiest to implement in Java, that's what a company will choose. Java is usually easiest, but only because there are so many good API's, and it's a strongly typed object oriented language making it easy for developers to understand each other's code. (no a->b[35].chocolate_pudding(-1)?null:0 BS)
You're arguement about C/C++ developers having stable jobs is exactly backwards from what you think. The number of jobs for C/C++ developers are not dependant on how many C/C++ developers are out of a job. It's based on the growth of market. If companies that specialize in C/C++ projects where growing, then there would be more job openings. The Java market is growing faster than any other. C++ is just behind it. C, on the other hand, is a niche market for system level program. How many kernels are needed? It doesn't grow very much at all. It's the new assembler. It's the great platform portable assembler!
The entire XP ideology is based on OOP(small talk originally). Most of it doesn't make sence elsewhere. Refactoring is the #1 concept of XP adopted by most people. That concept was designed specifically for OOP. Refactoring was common place before XP. Now it has a name, and a method to make it easy using OOP.
Re:Why people ask for Java + C++ (Score:2)
In any circumstance where you want:
1) A responsive user interface.
2) High speed code execution.
3) Parameterized classes.
4) Stable APIs.
I was laid off a year ago from a company that was an all-java shop. For years I had written software exclusively in Java. I believe the reason we couldn't get customers for our product was because our product was 100% Java and was SLOW. After leaving the company and going back to C/C++, it was quite a hit on the head to see just how much faster C/C++ was in comparison. Pure logic and method invocation easily felt like an order of magnitude faster.
I'd go back to Java if I had the chance, but all that "write once run anywhere" speak is just crap. I can't tell you how many hours I spent at a Solaris box trying to make code that worked perfectly under NT/2K to work under Solaris.
Re:Why people ask for Java + C++ (Score:1)
Re:Why people ask for Java + C++ (Score:1)
I doubt there is any math algorithm that can be written in Java that cannot be written in C++.
(which are a special case btw, most programming problems involve business logic, not mathematical calculations).
Okay, how about you take the scrabble dictionary as a plain text file, and put each entry in some sort of height balanced binary search tree (go ahead and use a pre-made collection if you want). Then do 40 or 50 thousand unique searches. Profile time to create tree (wow! That's several hundred thousand object instantiations... not Java's strong suit) and time to search tree. My experience has been that C++ will slam the equivalent Java code.
In some cases Java is faster due to the modern runtime compilers such as Hotspot that are able to re-adjust the runtime code to dynamically allocated data structures.
You've got to be kidding me... Hotspot optimizes methods based on usage. A heavily used method may get recompiled with a higher optimization because the time penalty of optimized compiling is offset by the time savings of the optimized result. C++ starts out with the best optimization hotspot could hope for.
Re:Why people ask for Java + C++ (Score:1)
Hmm.. WORA seems to work just fine for me. I know shit about Solaris (or any OS really) but my Java programs seem to work quite reliably on all systems that have solid JVM implementations on them.
Of course, WORA is easily broken by a newbie programmer so it does require a competent team of Java developers to be able to achieve it.
Re:Why people ask for Java + C++ (Score:2)
Well we don't call them newbies, we call them "Junior Engineers". But yes my job was come along behind them and fix anything that was causing problems moving over to Solaris.
so it does require a competent team of Java developers to be able to achieve it.
A competent team of developers can write C++ code that is portable between Windows and Solaris with forks for the UI. What good is Java if it still requires a team of senior engineers to avoid all the landmines? As many have said before, that isn't write once run anywhere, it's write once test everywhere. All of our software had to be thoroughly tested on both Windows and Solaris. I'm not clear that Java saved us anything in time spent in development, but cost us a lot in performance.
Re:Why people ask for Java + C++ (Score:1)
Of course they can. Or with any other language. With Java it is a lot less work though.
What good is Java if it still requires a team of senior engineers to avoid all the landmines?
Java, or any other programming language, will not do away with the fact that programmers in general need to know what the hell they are doing. If you thought you can go with Java and do not need experienced people to use it effectively, then you have made choices based on wrong assumptions.
As many have said before, that isn't write once run anywhere, it's write once test everywhere.
Again, just shows that you did not know what you were doing. Everyone doing serious Java development does extensive testing on the platforms they expect to use the most. Java does not promise to do away with testing. If you thought it will, then you made your choices based on bad assumptions.
WORA has worked great for me. People are using software written by me on platforms I never even anticipated while writing it. However, I do not think I can get quality Java software without an experienced programmers or by dropping solid testing procedures. It is quite stupid for anyone to think they could.
Re:Why people ask for Java + C++ (Score:2)
Is it? The only benefit to Java over C++ here is Swing. And Swing is painfully slow (I once had the discomfort of using a swing-based Java app running on solaris over exceed... the memory still makes me cringe)
If you thought you can go with Java and do not need experienced people to use it effectively, then you have made choices based on wrong assumptions.
Okay, this is one important point with Java... You need just as much talent with Java as with C++, so Java sees no savings in hiring costs.
Everyone doing serious Java development does extensive testing on the platforms they expect to use the most
Yes, this is because each JVM has its own peculiarities and bugs. So you can't "write once". You "write once" then refactor for each platform you run on. So Java doesn't save that much time there.
Every project I've seen (whether I worked on it or not) that has used Java for its "run anywhere" promise has paid the gains in time of not having to port to another platform with trying to improve their business logic so that the software isn't so slow it offends users, and working around JVM bugs of different platforms (or dealing with UIs that suddenly look hideous when using Sun's braindead selection of fonts on Solaris).
Re:Why people ask for Java + C++ (Score:2)
Anywhere you need high performance code more than you need the assistance with portability. That means almost any serious maths and any serious database work, for a start, never mind real-time stuff, instrument control, etc.
I doubt it. Management's idea of what it thinks is best will probably dictate the path, and unless you're blessed with technically competent managers, this will usually slow you down significantly in getting your job done. Alas, such is life.
Further, if you think that modern desktop PCs have adequate processing power and memory for serious crunching, either numbers or databases, I'm afraid you're a little short of the mark. I'm going into work tomorrow, profiler at the ready, to hand-optimise some algorithms that just aren't running fast enough to be acceptable in our product. They do some relatively straightforward maths, but still take several seconds on the top-of-the-range Dell box on my desk with realistic data sets.
This is already code that's had its basic data structures and algorithms optimised by some very clever people for a decade or so, which means it really is the raw processing power that's lacking. I don't even want to contemplate the performance hit that would be entailed in shifting this sort of thing to a system running a language with the sort of overheads imposed by Java.
No, it's really not. Many of the free classes available for Java are... erm... not very good. Today's Java standard library is an example of poor design that would make even those responsible for MFC proud, a perfect illustration of too many sous-chefs spoiling the broth.
Interesting you say that. I've programmed a bit of Java in my time as well, and I'd say the complete opposite. I currently work on a C++ project that compiles on something like 15 different platforms, without any major problems porting it. (The UI and such are simply abstracted out into platform-specific libraries, none of which is really more than a few functions in one file to call the relevant UI toolkit.)
In contrast, I've rarely seen a truly successful use of Java as a cross-platform programming environment. It certainly has its good points, but I don't think that's one of them. And I'm sorry, but I don't for an instant believe that your XP problems would have been easier if you'd been using Java; the most popular JVM for Windows couldn't even handle a mouse properly with Swing programs for several years, which isn't exactly confidence-inspiring.
Not at all. My argument is that a lot of serious programming is done in C++, and that needs good people. There aren't enough good C++ people moving in the market right now, so they look to good people who know Java and would be willing to make the jump.
Sorry, but you really gave yourself away there. Every single sentence above is so clearly, demonstrably, provably wrong, that it's not even worth refuting them (though I can provide copious arguments to support this claim if you really, really want).
(I'll gloss over the next bit, which seems to say that because one popular Internet job site lists a whole 100 jobs for .Net programmers, that means .Net is taking off. Get back to me when it's 100,000 jobs, or maybe 1,000,000. This particular job site is hardly representative of the industry anywhere near where I work, speaking as someone who actually moved jobs recently.)
Sorry, but that, too, is Just Plain Wrong(TM). There is very little about XP that is OO-specific. Major concepts, such as pair programming, the importance of unit tests, constant refactoring, developing in small increments and so on have all been around since long before anyone hyped them up and called them XP, and all apply to any other non-OO programming methodology you care to name. I'm pretty sure we used to talk about refactoring (in the sense of reorganising your code to reduce redundancy and improve the design) long before I ever heard of XP, or probably even OOP, too.
Re:Why people ask for Java + C++ (Score:2)
For mathmatical algorithms, most people bypass even C and go straight to assembler (though they usually keep an unoptimized version for portability).
Any management decision is going to be made on economical principals, or else your business isn't going to stand up to competition. Usually, and unfortunately, management isn't always well informed. As you would see someone like me telling management what moves to make, I see management taking your advice and see similarities with cobol.
Modern computers are fast enough to do 99% of all tasks easily in the slowest of environments. You won't be able to name more than 1% of tasks that require more processing power. If Java was 50% the speed of C++, then by moores law, only software designed for the last year's hardware would not be possible to do in Java. In C++, design and development of software that was that processor intensive would take about a year. Especially considering that you have to worry about buffers and leaks.
A lot of serious work is still done in C++ and C. I don't dispute that. You wouldn't have disputed that a lot of serious work was being done in COBOL about 5-10 years ago. Java is more efficient because the DLL hell is worried about by one single team of developers. That is the TCO savings. We already have a partial Java port of our software, and I just tested it 2 days ago under XP. It works great so far. Works fine on Linux as well.
I can't believe you would compare the Java API with MFC. MFC isn't even really object oriented. The types of the data are very similar to assembler directives for declaring memory (DWORD, etc). The Java API is hierarchial, fully OO, and very easy to understand. There is an object for a button, not an ID. I hated every minute of using VC++ and the MFC. Borland's class library was a lot more sane, but interoperability with other Win32 API's that didn't have the BCL to wrap it was a nightmare that I only solved with embedded assembler. C++ is not pretty when dealing with the Win32 API. Then with C++, if you want some sane way to do something, you have to rely on some proprietary third party library. So far, we haven't needed a single third party library in the rewrite of our current software in Java.
The most popular JVM for windows?? If you mean MS's VM, I'm not even going to argue with you. It's a POS. Anyone programming for that is going to thing Java is a POS. Anyone claiming that it is faster than 1.4.1 from SUN, hasn't really compared the two.
The wave may not have reached where you work yet, and it may never considering that you might be in the 1% where C++ makes sence. If performance is that important at where you work, then you aren't working in a normal job. You may be working on a kernel, photoshop, or 3d studio, but the average person is building a dynamic storefront online, games, DBMS, etc that are more IO bound than CPU bound. In each of those cases, you will have a larger problem delivering data through the network, rendering graphics on the GPU, and accessing the disk respectively.
I admited that refactoring came before XP hype. refactoring is one of the greatest forces for OOP though. It is much easier to refactor code and keep an object performing it's usual task than it is to do the same with a set of dlls. dlls compartmentalize sets of functions into something almost recognizable as an object. Else, a bunch of free floating functions would be impossible to maintain or to refactor.
Re:Why people ask for Java + C++ (Score:2)
For many databases, sure; I certainly wasn't intending to suggest that all database work is processor-bound the way heavy maths and such is. It obviously depends on the nature of your queries, though. Serious database servers use all those megs of memory as one big cache for a reason, after all, and they can potentially make much more effective use of it with a language like C or C++ that can reach lower.
Rather than simply sling our personal beliefs, though, let's look at some real examples. At the last count, something like 75% of the most-visited web sites -- nearly all of which are basically database front-ends -- had their back-end software written in C++. (Sorry, I forget the source; probably a quick Google will turn up a copy of the article somewhere.)
That's really not true. Most well-regarded mathematical libraries in the world are currently written in C or C++. (This is my current line of work, not idle speculation.) With modern processors and architectures, it's often the case that a compiler will generate better output code than raw assembler written by an average programmer, because it will take account of pipelining and caching, systematically allocate the use of registers, etc. I know of at least one big company that writes most of its consultancy stuff in C++, but keeps its core engine in C, basically because the C compiler does a better job of optimising the output code than the equivalent C++ compiler.
Assembler can be useful, but you really need to know what you're doing to better a modern compiler on a modern processor architecture, and obviously you also sacrifice portability for that code. That's usually too expensive a price, in practice.
I'm afraid your bias is really showing again. Modern Java is certainly of a comparable speed to C++ in everyday code, assuming a decent JVM, JIT compilation, etc. But when it sucks, it really sucks. The things Java forces upon you for safety -- garbage collection, array bounds checking, yada yada -- can make literally orders of magnitude difference to execution speed. It's just a matter of how much these things get in the way. Normally, it's not enough to worry about, but in some applications, it hurts all the time.
I'm afraid I can't resist rebutting your bash on C++, either. How can you arbitrarily say that development of processor-intensive software would take about a year? More to the point, why do you think C++ still suffers from buffer overruns and leaks? I haven't had either in years (and I have the results from running Purify and such to back me up on this). Any competent C++ programmer uses the tools available to avoid this, reducing the claims to an old wives' tail thrown about by C++ bashers who don't know their subject.
Granted, that was slightly harsh, but not that harsh. MFC is certainly deserving of criticism, but while Java's APIs may be more "OO", they aren't much better designed in many places. Just look at the number of redundant or deprecated classes lying around. Just look at the effort it takes to read in and parse a string. And why do I need two GUI APIs that are similar but different anyway?
There are some languages and libraries out there that do certain things well. Perl does regular expressions and string parsing well. VB does Windows database front-ends well. FORTRAN is legendary for its high-performance maths, and still more than holds its own for the practising scientist who's not a software engineer. C++ combines low-level flexibility and high-level code well. Which part of the Java API would you cite as being exemplary, or even particularly good, in its handling of a particular field? What proportion of it would you say is pure bloat?
Sorry, I should perhaps have said "most widely used", rather than "most popular" to make myself clear. I agree that it's very bad. But the point is, it's what most people running everyday desktops (and not a few businesses who write Java apps but don't know better) are using. I've downloaded any number of "portable" Java tools from the net, and these days, I've given up, because they all fall over somewhere or other on Windows boxes. I just don't have the time or inclination to update to the next incarnation of Sun's JVM every few weeks on all the boxes I use.
Clearly this is not a problem for businesses who are setting up all their own systems, and can choose to use Sun's JVM for their back-end stuff, which, incidentally, seems to be where all the serious action in the Java world is these days. It makes a mockery of the "write once, run anywhere" claims, though. As the critics have always pointed out, you need a good JVM first, and there ain't a whole lot of them around.
I accept entirely that my current job is not the average in the industry. However, I think it's a little unfair to claim that Java is suitable for 99% of the work out there. There are a lot of "business apps" (aka databases) out there, sure, but there are a hell of a lot of non-database applications, too:
This list obviously isn't comprehensive, but it does illustrate a few of the big non-database development areas. A cursory look down any job ads page, or one of the few surveys into areas of work within the industry if you can find them, will demonstrate that these areas make up just a little more than 1% of software development that goes on!
I totally accept that Java is improving in some of these areas, particularly things like embedded control software. It's still the new kid on the block, though, and it has a long way to go before it's playing with the big boys yet. However, with these fields being as vast as they are, there just ain't enough good C and C++ programmers to go around. A lot of people over the past few years have come out of uni straight into Java programming jobs, that being the most popular principal language on CS/SE courses over recent years. It makes sense to tap that market for good people -- not a few of whom will have taken such courses -- and thus you get the ads for "Java or C++ programmers".
Well, that's my theory, anyhow. :-)
Re:Why people ask for Java + C++ (Score:1)
Embedded: J2ME is compiled directly to bytecode, there is no difference between C++ and Java.
All Java code is "compiled directly to bytecode." And if you meant that it's compiled to machine language, that doesn't seem to be true based on what I've read about J2ME, the CVM, and the KVM.
Re:Why people ask for Java + C++ (Score:2)
That arguement aside, I could probably write an entire OS in Java and compile it down to x86 code. SUN should really consider the merits of writting a JVM in Java. They can then distribute a tool to translate Java code to native instructions. They already do this with their jit, they now only need to do it with a stand alone tool. It's all OK though, because Gnu is doing similar things for them, and there are already commercial products that will convert any SWT project into native binaries that need no JVM.
I'm sorry for any confusion or misleading statements. Keep in mind, though, that java is a language as well as a platform. GCJ will compile Java 1.1 compliant code into a linux elf binary. No real difference than C++ there, and it will have the same performance, close anyhow, to C++. If you are interested in using Java for an embedded application consider both alternatives (GCJ and Java hardware) for one that fits your needs better. It is viable.
A good thing (Score:5, Insightful)
The C# versus Java debate is a red herring that's most interesting to language bigots. There's a more important difference between the philosophies. Sun wants the world to write all its code in Pure Java, abandoning the non-Sun environments they currently have. This is a great idea for full software programmer employment, we can spend all our time rewriting the world's code in Java. Not.
Microsoft wants to let people to migrate the stuff they have slaved over for the past 25 or so years into a shiny new Common Language Runtime environment. Yes, there is a new C# language, but the front end can be other languages as well. With minimal changes, a business can take the core of a Cobol program that has proven itself over the past 10 years, recompile it with a Cobol compiler that generates CLR [netcobol.com], and drop it down into a new distributed environment. They can write the web interface to that Cobol core in any language they want, including C#, VB, Javascript, Fortran, or even Java (J++) if that's what their current programming staff is trained to use.
For a moment, ignore the language bigotry and disregard whether Microsoft might implement this in some way that will hurt their competitors. Which approach seems to be the most logical to you? Rewrite all the world's code or reuse what you can?
Re:A good thing (Score:2)
Wrong (Score:2, Interesting)
We converted 2+ million lines of c/c++ code to CLR in a matter of days.
Now, making some of those c++ classes interact with other
Re:A good thing (Score:1)
Re:A good thing (Score:2, Interesting)
You have to be kidding.
VB.Net apps have little resemblence to their old ones. Most VB6 apps that would have required migration have stayed as COM because it would have been too costly to migrate. It is not even the same language in my opinion. It's like English - someone from Massachusetts has a hard time understanding someone from Kentucky. Sure, it's the same language, but they are both wacked out.
It would be nice if VB were ISO'd, but you'll never see that, and that's a shame... although it's a crappy language to some, it is (was?) relatively easy to pick up and run with. C# comes close, as does Java, but Basic is one of the first things people use, thanks to Office and all their other stuff.
Microsoft..... why do I have to be your bitch?
Re:A good thing (Score:2)
With minimal changes, a business can take the core of a Cobol program that has proven itself over the past 10 years, recompile it with a Cobol compiler that generates CLR, and drop it down into a new distributed environment.
They can write the web interface to that Cobol core in any language they want, including C#, VB, Javascript, Fortran, or even Java (J++) if that's what their current programming staff is trained to use.
Actually, C# and the CLR are really intriguing and seem to have some interesting new features, but Java is here NOW and enjoys wide industry support with multitudes of cross-vendor tools and compatibility. At my workplace, we have been stepping into the J2EE waters and have been having huge success at webifying legacy COBOL/mainframe applications and integrating them with newer distributed systems. In particular, we've been using WebSphere Studio Application Developer (WSAD) to develop and deploy to WebSphere running directly on the mainframe. We could just as easily be running WebSphere on a non-mainframe server or even be running applications on another J2EE server entirely. Just for fun, we deployed our app to Weblogic on a Sun server and it ran just fine. We have one old mainframe coder who spends about 30 minutes per legacy application running IBM's Enterprise Access Builder to generate Java interfaces to the programs, and then throws the Java over the wall to us. He knows absolutely zero about Java and distributed systems. We had a future need for bar coding, 10 minutes browsing on the web gave us a demo download of a generic barcode generator running as a servlet alongside all our other code, and boom, every page that needed a barcode was just a snip of HTML away.
We love this approach because 1) it allows a wide choice of hardware from small to scaling way past the biggest PC servers 2) it allows a wide choice of software (servers, dev tools, third-party add-ons. etc.) 3) employees can use their existing skills at different stages of the development with a good interface/workflow between stages 4) it appears to be reaching a stable, mature technology phase and most importantly 5) it allows us to leave our legacy applications unchanged in place where they are, integrating them into new systems while giving us time and breathing room to make careful decisions on what core business logic makes the most sense to migrate and which functions should stay right where they are. And we are doing this today, right now, with stable tech that just works.
It will be a while before C# and the CLR can present the same ability and maturity.
Re:A good thing (Score:1)
your right. Java failed to become the de-facto language which is what it was intened to be. But its stuck around and become a really useful tool (which is what a language should be)
Re:A good thing (Score:1)
sure, Linux plays a part in it, but its just another soldier among the rest
Re:A good thing (Score:1)
Re:A good thing (Score:1)
I think you're being overly optimistic here. Ask any VB developer how minimal the changes to move to .NET platform are. *smirk*
Pay more close attention to reality, and less attention to Microsoft marketing machine, please.
Re:A good thing (Score:1)
And get stuck in the Microsoft Windows, IIS, Exchange, SQL Server, VSS hell?
I'll take any approach over that one in a heart beat.
C#, Java, Microsoft,IBM whatever.Give me a job... (Score:1)
But where are Jobs man..? Companies are cutting their IT budgets as much as Bush is planning to spend it on war.Companies are installing new security systems which filters out software developers.:-).So guys what do you think ? Does it matter if Microsoft C# is going to ISO or Java released new EJB specification ?
Re:C#, Java, Microsoft,IBM whatever.Give me a job. (Score:1, Funny)
Re:C#, Java, Microsoft,IBM whatever.Give me a job. (Score:1)
Bankable for years to come? (Score:2)
I wouldn't bet my career on it. Going with Microsoft's latest and greatest isn't always a sure thing, as anyone who went into Visual J++ found out a few years back, and anyone with lots of VB6 background is discovering right now. Microsoft has already dropped several major parts of .NET faced with, essentially, a complete lack of interest in them (which was widely predicted by anyone who watched the industry months earlier). What makes you think there will be any serious advances in C#/.NET's CLR in the future if they don't take off either?
If I could take a language like C++ or Java, which has a wide range of applications and is widely adopted across the industry, or a language like C# that's much hyped but currently little used, I'd go for the safe bet if I knew I needed a rent cheque next month.
The key is infilitrating the classroom (Score:2)
Of course, then these same schools go ahead and use Visual C++, so standards go right out the window. But the buzzword remains powerful in their purchasing decisions. For this very reason, Java is only being hesitantly adopted.
If Microsoft can get C# standardized, they won't have to use the standard. They just need it for marketing.
Re:The key is infilitrating the classroom (Score:2, Interesting)
The AP Computer Science Examinations will require knowledge of the programming language Java beginning with the 2003-04 academic year and the 2004 examinations. The exams will continue to cover the fundamentals of computer science taught in first-year college courses. However, those sections of the examination that require the reading or writing of actual programs will use Java rather than C++.
So maybe standardization doesn't matter for getting the language into the classroom? Next year every AP computer science student will be learning Java.
Adam
Re:The key is infilitrating the classroom (Score:2)
However, the Java course will be CSC 228, while the intro(115) will continue using C++. Why they're incorporating Java as a second-year course because maybe 2% of their students are coming in having taken the AP course is beyond me.
Re:The key is infilitrating the classroom (Score:2)
What does this help? (Score:1)
What would ISO-C# help as long as the main vendor doesn't support multiple targets?
99% of the C# code will use some part of the Windows classes space, and will be inheritely importable.
So that leaves some academical playing with the rest. I'm also afraid that will be Mono's place.
This is no competition of Java (and I'm no Java lover btw, just a realist), which is already entrenched in a lot of companies.
Not standards, but decent vendor support is what
C# needs to make it credible for non M$-shop managerial eyes.
Absolutely Brilliant (Score:1)
Standardize your own technology, try to get people to buy into the standard, and then
Microsoft should try and patent the process by which it re-proprietizes it's proprietary products.