I'd rather they get consensus about what is needed before lambda's are implemented - better than putting one in and finding out it wasn't what people wanted. Turns out plenty of software can still be written in Java without Lambdas (as has been for the last 15 years) - they are a nifty feature, but not essential.
Go and check the Tiobe index. Java is huge, it is just that it isn't as fashionable as iOS so gets less press. Plus, there is not much bad news in the Java world to sell papers/advertisments (except for the recent Oracle vs Google silliness). Basically, the Enterprise space (where the money is for developers) is mostly Java, with a little.NET. But Average Joe (without good visibility of the breadth of computing) think that 'computing' means desktop and iPad - sounds like you do too. The reality is Java is *everywhere* and pretty much just works, which is why it doesn't get much press. Java's ubiquity shows its success, and plenty of new projects are written in it (adding to the enormous number of existing projects), even though the chattering classes don't find it sexy anymore.
As a Java user there is *zero* risk you'll be sued - so please cut spreading the ignorant crap, eh? There is a problem if you write an incompatible Java implementation (as Google did, and Microsoft before them, although for different reasons).
Avoid Websphere. Use Tomcat - lots of them. This is a "Cathedral vs Bazaar" model. The 'Bazaar' approach of lots of cheap components seems to work well enough for Google. Don't waste your money on Websphere, it can't make up for competent developers (so use Tomcat and put the money saved into getting an keeping great developers).
Actually, as someone who has to use write-once run-anywhere on a daily basis (and over the last 15 years) I'd say you are very out of touch with what the Java situation is today. Yes, there are "Superior lightweight alternatives" for the small projects you probably work on. Try a project with hundreds of thousands to millions of lines and dozens of people working on it. Java works both on the small side (I've used it in very small embedded systems, using GCJ) to the mammoth (Internet scale, which I've also worked on). Sorry mate, sounds like your vitriol for Java is because you work on a limited range of stuff (where your limited domain-oriented frameworks happen to work well). Oh yeah, sounds like you have a bit of an anger management problem too ("con-slut-ants"? what are you, 12?).
The rest of the World has been doing good research without the colossal budgets their American colleagues enjoy (I know, I was part of a project that operated on a shoestring - but we still found the free brown dwarfs in the galaxy). Maybe there will be fewer spectacular programmes, but of course great research will still get done. Of course, you can always join international collaborations as partners to pool resources, rather than be the rich kid having all the toys to themselves.
Sorry if this sounds harsh, but Americans have had it so good for so long they didn't even realise how fortunate they are. Even with less excess wealth about they are still by far the richest people per capita - although certainly indvidivual Americans have it very tough at the moment - so it sounds a bit whiney when we hear that some program is being reduced because the US is going from (comparatively) very wealthy to just wealthy. Be grateful for what you already have, and appreciate all the things you also have that don't require lots of money (your health, friends, family, girlfriend, more opportunities than most Africans can dream of, more cheeseburgers than even Garfield can dream of, Mom's basement, and that fact you even have a computer to read Slashdot on!)
Nope. There was no official US Government policy to steal stuff from Britain. Although infraction of copyright and patents were ignored in the US (similar to what China is doing now).
The Chinese Government has a policy known as the 'Thousand Grains of Sand' where each citizen is encouraged to bring back a little something from overseas if they can. Then one of the hundreds of thousands of state officials implementing this policy will see what the person brought back and dole out any appropriate reward. This is why Chinese citizens (and some Chinese descended citizens who return to the motherland) are being caught all over the World doing this sort of stuff (eg. in New Zealand Chinese regularly get caught stealing agricultural samples that our higher-value export industries are based on). While anyone can be a criminal, I can't think of any other country in the modern age where this is officially sanctioned.
China wants to be number one in the World, and perhaps they will get there, but it seems an awful shame they're so determined to do so that they are quite unethical (from the majority of the rest of the World's point of view). This is not meant to be a bashing of China, or of Chinese citizens, just an explanation of why these events are becoming more frequent for those unaware of the official Chinese Government policy that encourages behavour considered criminal elsewhere. The Chinese Government will smile at you while robbing your house behind your back (although this is nothing compared to how they treat their own citizens).
Swing lets you do desktop, applet, and 'Webstart', which is kinda mixture of the two (Webstart applets start 5x faster than traditional applets if you've copied the Webstart applet to the desktop, but you still get the benefit that the applet checks for and applies any updates from the server).
Also, don't forget to check out Google Web Toolkit (GWT) for web development. It is a fantastic way to do AJAX webapps without too much worry about browser-specific (unlike 'raw' Javascript development).
Good one, blame the reader for their comprehension skills, when perhaps the writing had better clarity and was more direct then misunderstandings would not arise. Thanks for clarifying though, I agree with you analysis (now that it has been clarified).
Done any Swing development since Java 1.6.0_u10 came out, or are you basing your comments on half-decade old experience (which is the Stone Age in IT, yeah)? Turns out that Java2D (which Swing uses) is *fully* hardware shader accelerated since that JDK release - that is, used DirextX or OpenGL to draw (depending on platform). You can't make Swing slow unless you block the Event Dispatch Thread (EDT) - which unfortunately many inexperienced people do (which is definitely one negative for Swing). We make and sell apps on GWT and Swing and no-one knows the difference (in fact, most people comment on how the 'Nimbus' Look & Feel is so much nicer than most of the (native Windows) apps they have - which I was surprised by).
As long as you know what you are doing (which I'm sure you do) with regard to Swing's Event Dispatch Thread it is extremely performance ever since 1.6.0_u10 (when all of Java 2D became fully hardware shader accelerated). Plus, you don't have to deal with the macro-madness of Qt. Swing is a viable option, and if you know what you are doing (using profiler-guided optimisation) then enterprise customers don't even know the difference between that and something written in another toolkit.
Oh, so you're such an amateur that Java does not enter your consciousness. One technology for way more than three platforms. Incidentally, if is not product managers that demand cross-platform (again, novice thinking to think that shrink-wrapped software dominates; here's a clue, bespoke custom software dominates total number of development projects, and the public never sees it). It is the clients of that mass of bespoke software who work for big companies/government departments/defence who have all sorts of systems (a bit of everything). The number of desktops is huge, but they have a smaller pool of software than the fewer servers that each run a lot of customized stuff.
> Good, so we can agree then that, as far as getting old stuff working, WinForms is not any worse than Swing.
Assuming of course you never used pInvoke to get anything done (really, you didn't?) and I never used JNI (never needed to, unless I was integrating hardware).
> Also, I cannot claim any love (or hate) for SWT as a developer simply because I haven't written any app in it. All of my good attitude towards SWT and corresponding bad attitude towards Swing come from my experience as a user of apps written in either. That said, I'll take a Qt app over both any day.
Laughable. So you won't actually listen to a dev who's used these in anger and say they are a dog but instead only care the fact they that make you feel as if the were ctrl3d apps (and apps that don't look and feel exactly like this rate as worthless in your book). In the old days we used to call that arrogance. Here, be my guest, please take a mirror.
Look, I have nothing against lambdas or any other minor language feature. If I wanted to use them then Clojure would be a good option (out of many), and I may use them when they fall into Java. Turns out I find them mostly irrelevant for two reasons: I've been able to solve all my problems elegantly enough without them; and, they actually make negligible difference in projects when you're building for the million-lines and milions-of-users scale. The niceties of C# (for example, they it has definitely them) will *never* make up for the fact that you'll miss out on the business of Windows-focussed clients *and* the huge clients that have a mix of everything. For me it is about the business principles of making *money* and the continuity. Before you say it, there is no real productivity difference between Java and C# for a reasonable dev, so that really isn't reason to choose one over the other. One day.NET will be on the unloved heap along with OLE,COM,DCOM,COM+,ActiveX,MFC and all the other tech MS hyped at the time (and still allows to run, kinda). Just look at all the fools who backed Silverlight and how they are getting shafted now as Microsoft switches focus to a new technology (as they always do every few years). I bet you think it isn't going to happen to.NET, or that the cost of moving your (or worse, you clients) business over and re-writing everything is negligible (well, it's not, but then if you are only an employee you don't usually think about this stuff). I've been fortunately to have been around long enough in this game to see Microsoft do it again, and again, and again, and realise they *have* to do this to make money (at the expense of those that build systems based on their tech du-jour). I'm also smart enough to know that you can get away from the karmic cycle of continual tech re-birth and actually concentrate on solving hard problems instead of re-inventing the same sh!t in new tech. Sure I upskill continually (doesn't everyone?), doesn't mean I use the same fads to develop my critical stuff.
Oh, and if you are one of those people who only notice seismic shifts and never notice the creeping of tectonics (techtonics, lol), here's a question I have. Why would you hitch your horse solely to a stagnant company, with no alternative supplies of their tech, and one whose share price is only propped up by continual colossal share buybacks? Seems that the Wall Street dudes have a better grip on commercial potential than many, which is why although MS is very profitable (won't go away) it also not going anyway (if you have been paying very close attention you'll see it has started its decline). Microsoft is like IBM, huge, but no longer a thought leader. It seems a shame you can't even see that you are putting their business interests ahead of your own by limiting yourself to their tech - plus you miss out on all the big opportunities you are never even invited to bid for, since your choices have limited you so you can't do Windows *and* everything else. This is what differentiates tactical thinkers from strategic ones. It would be very interesting to have the same discussion ten years from now. Thanks for taking the time to post your reasoning and state your point.
>They must? Funny, that - I wrote a WinForms app for a company once, back in 2002, when.NET was still all new and shiny, having been released that very year. It still works fine, after 2 OS upgrades (98->XP->Vista), and I still occasionally make fixes for them - without porting anything to new frameworks and such. It compiles just as fine in VS2002 (the very first one) as it does on VS2010.
Your app can't have been doing very much. Just routine form stuff I guess. Yeah, I also wrote WinForms apps starting back around the same time you did. It was ok for simple stuff, but a bitch to extend (just like your beloved SWT). Turns out that the Java Swing apps I was also writing at the time (although they were dog slow back then, thanks to the slow JVMs of that time) still also work - on all platforms too.
> Such people, when they refuse to move on with the times at all (rather than merely being conservative, but still moving ahead), are generally called "luddites". Luckily for us, the majority of people in the industry aren't luddites, which is why we have real and significant advancement in both programming languages and frameworks.
Nope. Such people use it because it still works (like C!) and the added complexity doesn't add much, especially like when in C# they add and deprecate features based on the fashion du-jour. Incidentally, you are living in a bubble. The numbers speak against you, please check out http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html for a more realistic appraisal of what is going on globally.
Well, I don't have the grey beard yet but I do have the salary (and the PhD in Astrophysics, incidentally). I realise that good design seeks to remove complexity, not introduce it arbitrarily because it piques the interest of an otherwise bored developer eg. those that change languages like they change their underwear in the misguided belief that a handle of extra language constructs will make up for a breath of solution-space libraries - which is where real gains productivity are achieved. Unfortunately many people don't understand great design (in any area) is generally about removing unnecessary complexity whenever they see it. As Einstein is often (mis-)quoted, "As simple as possible, but no simpler". Java is like C, it kicks ass because the language just enough to get the job done (and the real work is done by the libraries).
Incidentally, if you don't think platform independence matters from a business perspective then you won't even see the opportunities you've missed (I guess mere employees don't even looking at this aspect). Check out this interview where Austin Meyer of X-Plane fame personally made $3.5 million in one month because he chose OpenGL over DirectX (I already know what technology you'd advocate, but then you'd miss the $3,5 million personally in your pocket if you did): http://techhaze.com/2010/03/interview-with-x-plane-creator-austin-meyer/
> True, but changing fast now that Ribbon is available out of the box in all development frameworks shipped by Microsoft (MFC for native, WPF/Silverlight for managed), and that other MS-made apps all get ribbonized - even something as trivial as MSPaint.
Ah, I see you are talking about new stuff. I'm talking about the *huge mass* of applications that users are using today.
Nope. C# as implemented in Mono does not look like C#.NET, hence I use a qualifier.
> It depends. When your intranet is already all MS (IIS, MSSQL, SharePoint etc) - which is true for a lot of companies out there
That's the small and medium enterprises youare talking about. Big, established companies (government departments, defences, banks) have a lot of everything - which no one person gets to choose anymore. Hence, developing Windows-only is a non-starter at the higher end of the spectrum.
> Either way, I don't have anything against Java on servers - it has performed admirably there for years, and laid groundwork for most web development methodologies in use today. If given the choice, as a developer, I'd still prefer C# on something like ASP.NET MVC, but that is purely a language preference - I want my lambdas, type inference, and syntax comprehensions, and Java feels positively antiquated after writing C# for several years. They're catching up, but slowly (lambdas are only coming up in Java 8). But then of course there's also Scala, which can be used with existing Java frameworks...
Ah, the language lawyer person emerges - must have the latest shiny eh? For big to huge teams on long-running projects these features are a business liability (big teams *must* plan for turnover and recruitment of less than A+ devs, except in very exceptional circumstances), plus your MS-provided tools must change every year or two or MS can't demand revenue for them. Again, your arguments are focussed on the tactical and not on the strategic.
Try something like Visual Paradigm. Beats the snot out of Windows-native crap like Enterprise Architect. And no, most Windows apps still don't use the ribbon and not every one of them is written in C#.NET (which I presume you mean by.NET). There is a huge amount of legacy VB stuff out there. And yes, most stuff is being written as web apps these days (if they don't need much functionality), but that is even less of a reason to choose Windows-only technologies, isn't it?
This statement is true but myopic. Why only target 80% of a slice of the market. Why not choose a technology that you can use to develop for 80% of the market (including web, desktop, enterprise, phone) where only the front-end toolkit changes and the business logic remains the same. Unfortunately you seem focussed on optimizing your tactical technical objectives rather than strategic business ones (if I only considered the tactical I would agree with you). Also, looking to the past (the desktop) means you'll miss out on using your current code investment in the future growth areas. That's why I choose Java (plus Swing and GWT, and is easy enough to move to Android).
The 'its not native' is also another fallacy since there is no such thing as a 'typical Windows program'. Users actually don't give a frig. They care if your software is slow, buggy, has less features than another program, or was written by a developer who is clueless about good UI design and what users need to do. Ugly software has been commercially successful and kinda useful: look at all those hardware-manufacturer supplied interfaces that are basically controls on a non-resizable bitmap. How many users whinge about those interfaces not being native? What about the fact that every version of MS Office looks and feels different, do people whinge about that and not buy it as a result. Clearly you don't like some Java program you have used and try to rationalize your dislike, as if it was fundamental to the technology. Unfortunately, desktop-focussed folks like yourself don't ever seem to be aware that in the Enterprise there is a huge amount of Java software (on the desktop, intranet and back-end). No surprise, since companies don't advertise their internal software (for the effort, and because of possible competitive advantage). Again, if it was a Windows-only world I might agree with your position, but the reality is both Windows is not going away but also it is becoming less and less relevant. Targeting a single platform with your codebase, when you can just as easily target many, makes no business sense (and actually, never did).
Mate, on one application we developed I had to develop a couple of SWT custom controls and fix a few buggy third party ones. SWT is a mess on the inside and far harder to extend than Swing controls. I guess if you are on Windows only (who is these days?) then SWT might be ok for you. In our company's experience SWT is awful and we'd rather not use it, thank you very much.
I find it bizarre you think Swing sucks just because Netbeans is slow to draw (although in versions since 6.0 I never notice on my Mac, Linux or Windows machines). I was on the Netbeans open beta team for 7.0 and suprised you have this slowness in drawing, I can't recall anyone else having the same issue. I wonder if there is something dodgy with your particular system (software rendering?) since *all* of Java 2D is hardware rendered by DirectX or OpenGL shaders (depending on platform). You simply can't get faster drawing than that (unless you somehow have a Sun JRE/JDK before 1.6.0_u10 lying around on your path somewhere) - although it is still possible to write sucky code if you don't know what you are doing.
Oh, so you're very out of date, and have never heard of or used a "Filthy Rich Client" then, and only used Swing apps written by monkeys a decade ago. That's a shame. A Swing app (or any app really) written by a skilled dev skill kicks the web's ass for usability and flexibility (just not for deployment).
The results of Qt are nice but the development model is truly awful. It combines the macro madness of C with the meta-compiler madness of IDL/Corba and all the semantic shenanigans of C++. Sorry, I'll take fully hardware-shader accelerated Java Swing any day, and I'll have it working nicely in my multi-threaded apps too, thanks. Remember that "less is more", by which I mean the relative simplicity of Java is a real advantage in the real world (although as a result Java is 'dissed' due to the snobbery of many code monkeys out there - as if adding keywords and constructs ad-naseum made anything better or more maintainable).
Back in the day I used to build my Java programs on Windows 95 and run them on 64-bit 4-CPU SGI IRIX at my university. These days I never had a problem with 'write once, run anywhere' when I compile on Mac and test in Linux, and then give my stuff to people using Windows XP 32, Vista, and Win7 32/64 and none of them have had a problem with my Java program (bundled as n exe with JSmooth). You must have been doing something wrong?
You jest right? Java has a huge number of libraries, tools, and developers available. This is why Google chose it. Java is also GPL, thanks to Sun. This is a battle over ridiculous US patent laws, not over copyright conditions.
I'd rather they get consensus about what is needed before lambda's are implemented - better than putting one in and finding out it wasn't what people wanted. Turns out plenty of software can still be written in Java without Lambdas (as has been for the last 15 years) - they are a nifty feature, but not essential.
As a Java user there is *zero* risk you'll be sued - so please cut spreading the ignorant crap, eh? There is a problem if you write an incompatible Java implementation (as Google did, and Microsoft before them, although for different reasons).
Avoid Websphere. Use Tomcat - lots of them. This is a "Cathedral vs Bazaar" model. The 'Bazaar' approach of lots of cheap components seems to work well enough for Google. Don't waste your money on Websphere, it can't make up for competent developers (so use Tomcat and put the money saved into getting an keeping great developers).
Actually, as someone who has to use write-once run-anywhere on a daily basis (and over the last 15 years) I'd say you are very out of touch with what the Java situation is today. Yes, there are "Superior lightweight alternatives" for the small projects you probably work on. Try a project with hundreds of thousands to millions of lines and dozens of people working on it. Java works both on the small side (I've used it in very small embedded systems, using GCJ) to the mammoth (Internet scale, which I've also worked on). Sorry mate, sounds like your vitriol for Java is because you work on a limited range of stuff (where your limited domain-oriented frameworks happen to work well). Oh yeah, sounds like you have a bit of an anger management problem too ("con-slut-ants"? what are you, 12?).
The rest of the World has been doing good research without the colossal budgets their American colleagues enjoy (I know, I was part of a project that operated on a shoestring - but we still found the free brown dwarfs in the galaxy). Maybe there will be fewer spectacular programmes, but of course great research will still get done. Of course, you can always join international collaborations as partners to pool resources, rather than be the rich kid having all the toys to themselves.
Sorry if this sounds harsh, but Americans have had it so good for so long they didn't even realise how fortunate they are. Even with less excess wealth about they are still by far the richest people per capita - although certainly indvidivual Americans have it very tough at the moment - so it sounds a bit whiney when we hear that some program is being reduced because the US is going from (comparatively) very wealthy to just wealthy. Be grateful for what you already have, and appreciate all the things you also have that don't require lots of money (your health, friends, family, girlfriend, more opportunities than most Africans can dream of, more cheeseburgers than even Garfield can dream of, Mom's basement, and that fact you even have a computer to read Slashdot on!)
lol. Thanks for the link.
You are absolutely correct, at least according to a PhD in Economics who wrote for the Wall Street Journal
http://www.forbes.com/2010/03/18/china-growth-debt-currency-yuan-climate-markets-economy-myths.html
Plus there will soon be a lot more Hindi speakers (who also speak excellent English - the way Queen Victoria intended).
Nope. There was no official US Government policy to steal stuff from Britain. Although infraction of copyright and patents were ignored in the US (similar to what China is doing now).
The Chinese Government has a policy known as the 'Thousand Grains of Sand' where each citizen is encouraged to bring back a little something from overseas if they can. Then one of the hundreds of thousands of state officials implementing this policy will see what the person brought back and dole out any appropriate reward. This is why Chinese citizens (and some Chinese descended citizens who return to the motherland) are being caught all over the World doing this sort of stuff (eg. in New Zealand Chinese regularly get caught stealing agricultural samples that our higher-value export industries are based on). While anyone can be a criminal, I can't think of any other country in the modern age where this is officially sanctioned.
China wants to be number one in the World, and perhaps they will get there, but it seems an awful shame they're so determined to do so that they are quite unethical (from the majority of the rest of the World's point of view). This is not meant to be a bashing of China, or of Chinese citizens, just an explanation of why these events are becoming more frequent for those unaware of the official Chinese Government policy that encourages behavour considered criminal elsewhere. The Chinese Government will smile at you while robbing your house behind your back (although this is nothing compared to how they treat their own citizens).
Swing lets you do desktop, applet, and 'Webstart', which is kinda mixture of the two (Webstart applets start 5x faster than traditional applets if you've copied the Webstart applet to the desktop, but you still get the benefit that the applet checks for and applies any updates from the server).
Also, don't forget to check out Google Web Toolkit (GWT) for web development. It is a fantastic way to do AJAX webapps without too much worry about browser-specific (unlike 'raw' Javascript development).
Good one, blame the reader for their comprehension skills, when perhaps the writing had better clarity and was more direct then misunderstandings would not arise. Thanks for clarifying though, I agree with you analysis (now that it has been clarified).
Done any Swing development since Java 1.6.0_u10 came out, or are you basing your comments on half-decade old experience (which is the Stone Age in IT, yeah)? Turns out that Java2D (which Swing uses) is *fully* hardware shader accelerated since that JDK release - that is, used DirextX or OpenGL to draw (depending on platform). You can't make Swing slow unless you block the Event Dispatch Thread (EDT) - which unfortunately many inexperienced people do (which is definitely one negative for Swing). We make and sell apps on GWT and Swing and no-one knows the difference (in fact, most people comment on how the 'Nimbus' Look & Feel is so much nicer than most of the (native Windows) apps they have - which I was surprised by).
As long as you know what you are doing (which I'm sure you do) with regard to Swing's Event Dispatch Thread it is extremely performance ever since 1.6.0_u10 (when all of Java 2D became fully hardware shader accelerated). Plus, you don't have to deal with the macro-madness of Qt. Swing is a viable option, and if you know what you are doing (using profiler-guided optimisation) then enterprise customers don't even know the difference between that and something written in another toolkit.
Oh, so you're such an amateur that Java does not enter your consciousness. One technology for way more than three platforms. Incidentally, if is not product managers that demand cross-platform (again, novice thinking to think that shrink-wrapped software dominates; here's a clue, bespoke custom software dominates total number of development projects, and the public never sees it). It is the clients of that mass of bespoke software who work for big companies/government departments/defence who have all sorts of systems (a bit of everything). The number of desktops is huge, but they have a smaller pool of software than the fewer servers that each run a lot of customized stuff.
> Good, so we can agree then that, as far as getting old stuff working, WinForms is not any worse than Swing.
Assuming of course you never used pInvoke to get anything done (really, you didn't?) and I never used JNI (never needed to, unless I was integrating hardware).
> Also, I cannot claim any love (or hate) for SWT as a developer simply because I haven't written any app in it. All of my good attitude towards SWT and corresponding bad attitude towards Swing come from my experience as a user of apps written in either. That said, I'll take a Qt app over both any day.
Laughable. So you won't actually listen to a dev who's used these in anger and say they are a dog but instead only care the fact they that make you feel as if the were ctrl3d apps (and apps that don't look and feel exactly like this rate as worthless in your book). In the old days we used to call that arrogance. Here, be my guest, please take a mirror.
Look, I have nothing against lambdas or any other minor language feature. If I wanted to use them then Clojure would be a good option (out of many), and I may use them when they fall into Java. Turns out I find them mostly irrelevant for two reasons: I've been able to solve all my problems elegantly enough without them; and, they actually make negligible difference in projects when you're building for the million-lines and milions-of-users scale. The niceties of C# (for example, they it has definitely them) will *never* make up for the fact that you'll miss out on the business of Windows-focussed clients *and* the huge clients that have a mix of everything. For me it is about the business principles of making *money* and the continuity. Before you say it, there is no real productivity difference between Java and C# for a reasonable dev, so that really isn't reason to choose one over the other. One day .NET will be on the unloved heap along with OLE,COM,DCOM,COM+,ActiveX,MFC and all the other tech MS hyped at the time (and still allows to run, kinda). Just look at all the fools who backed Silverlight and how they are getting shafted now as Microsoft switches focus to a new technology (as they always do every few years). I bet you think it isn't going to happen to .NET, or that the cost of moving your (or worse, you clients) business over and re-writing everything is negligible (well, it's not, but then if you are only an employee you don't usually think about this stuff). I've been fortunately to have been around long enough in this game to see Microsoft do it again, and again, and again, and realise they *have* to do this to make money (at the expense of those that build systems based on their tech du-jour). I'm also smart enough to know that you can get away from the karmic cycle of continual tech re-birth and actually concentrate on solving hard problems instead of re-inventing the same sh!t in new tech. Sure I upskill continually (doesn't everyone?), doesn't mean I use the same fads to develop my critical stuff.
Oh, and if you are one of those people who only notice seismic shifts and never notice the creeping of tectonics (techtonics, lol), here's a question I have. Why would you hitch your horse solely to a stagnant company, with no alternative supplies of their tech, and one whose share price is only propped up by continual colossal share buybacks? Seems that the Wall Street dudes have a better grip on commercial potential than many, which is why although MS is very profitable (won't go away) it also not going anyway (if you have been paying very close attention you'll see it has started its decline). Microsoft is like IBM, huge, but no longer a thought leader. It seems a shame you can't even see that you are putting their business interests ahead of your own by limiting yourself to their tech - plus you miss out on all the big opportunities you are never even invited to bid for, since your choices have limited you so you can't do Windows *and* everything else. This is what differentiates tactical thinkers from strategic ones. It would be very interesting to have the same discussion ten years from now. Thanks for taking the time to post your reasoning and state your point.
Your app can't have been doing very much. Just routine form stuff I guess. Yeah, I also wrote WinForms apps starting back around the same time you did. It was ok for simple stuff, but a bitch to extend (just like your beloved SWT). Turns out that the Java Swing apps I was also writing at the time (although they were dog slow back then, thanks to the slow JVMs of that time) still also work - on all platforms too.
> Such people, when they refuse to move on with the times at all (rather than merely being conservative, but still moving ahead), are generally called "luddites". Luckily for us, the majority of people in the industry aren't luddites, which is why we have real and significant advancement in both programming languages and frameworks.
Nope. Such people use it because it still works (like C!) and the added complexity doesn't add much, especially like when in C# they add and deprecate features based on the fashion du-jour. Incidentally, you are living in a bubble. The numbers speak against you, please check out http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html for a more realistic appraisal of what is going on globally.
Well, I don't have the grey beard yet but I do have the salary (and the PhD in Astrophysics, incidentally). I realise that good design seeks to remove complexity, not introduce it arbitrarily because it piques the interest of an otherwise bored developer eg. those that change languages like they change their underwear in the misguided belief that a handle of extra language constructs will make up for a breath of solution-space libraries - which is where real gains productivity are achieved. Unfortunately many people don't understand great design (in any area) is generally about removing unnecessary complexity whenever they see it. As Einstein is often (mis-)quoted, "As simple as possible, but no simpler". Java is like C, it kicks ass because the language just enough to get the job done (and the real work is done by the libraries).
Incidentally, if you don't think platform independence matters from a business perspective then you won't even see the opportunities you've missed (I guess mere employees don't even looking at this aspect). Check out this interview where Austin Meyer of X-Plane fame personally made $3.5 million in one month because he chose OpenGL over DirectX (I already know what technology you'd advocate, but then you'd miss the $3,5 million personally in your pocket if you did): http://techhaze.com/2010/03/interview-with-x-plane-creator-austin-meyer/
Ah, I see you are talking about new stuff. I'm talking about the *huge mass* of applications that users are using today.
Nope. C# as implemented in Mono does not look like C#.NET, hence I use a qualifier.
> It depends. When your intranet is already all MS (IIS, MSSQL, SharePoint etc) - which is true for a lot of companies out there
That's the small and medium enterprises youare talking about. Big, established companies (government departments, defences, banks) have a lot of everything - which no one person gets to choose anymore. Hence, developing Windows-only is a non-starter at the higher end of the spectrum.
> Either way, I don't have anything against Java on servers - it has performed admirably there for years, and laid groundwork for most web development methodologies in use today. If given the choice, as a developer, I'd still prefer C# on something like ASP.NET MVC, but that is purely a language preference - I want my lambdas, type inference, and syntax comprehensions, and Java feels positively antiquated after writing C# for several years. They're catching up, but slowly (lambdas are only coming up in Java 8). But then of course there's also Scala, which can be used with existing Java frameworks...
Ah, the language lawyer person emerges - must have the latest shiny eh? For big to huge teams on long-running projects these features are a business liability (big teams *must* plan for turnover and recruitment of less than A+ devs, except in very exceptional circumstances), plus your MS-provided tools must change every year or two or MS can't demand revenue for them. Again, your arguments are focussed on the tactical and not on the strategic.
Try something like Visual Paradigm. Beats the snot out of Windows-native crap like Enterprise Architect. And no, most Windows apps still don't use the ribbon and not every one of them is written in C#.NET (which I presume you mean by .NET). There is a huge amount of legacy VB stuff out there. And yes, most stuff is being written as web apps these days (if they don't need much functionality), but that is even less of a reason to choose Windows-only technologies, isn't it?
> About 80% of desktop users?
This statement is true but myopic. Why only target 80% of a slice of the market. Why not choose a technology that you can use to develop for 80% of the market (including web, desktop, enterprise, phone) where only the front-end toolkit changes and the business logic remains the same. Unfortunately you seem focussed on optimizing your tactical technical objectives rather than strategic business ones (if I only considered the tactical I would agree with you). Also, looking to the past (the desktop) means you'll miss out on using your current code investment in the future growth areas. That's why I choose Java (plus Swing and GWT, and is easy enough to move to Android).
The 'its not native' is also another fallacy since there is no such thing as a 'typical Windows program'. Users actually don't give a frig. They care if your software is slow, buggy, has less features than another program, or was written by a developer who is clueless about good UI design and what users need to do. Ugly software has been commercially successful and kinda useful: look at all those hardware-manufacturer supplied interfaces that are basically controls on a non-resizable bitmap. How many users whinge about those interfaces not being native? What about the fact that every version of MS Office looks and feels different, do people whinge about that and not buy it as a result. Clearly you don't like some Java program you have used and try to rationalize your dislike, as if it was fundamental to the technology. Unfortunately, desktop-focussed folks like yourself don't ever seem to be aware that in the Enterprise there is a huge amount of Java software (on the desktop, intranet and back-end). No surprise, since companies don't advertise their internal software (for the effort, and because of possible competitive advantage). Again, if it was a Windows-only world I might agree with your position, but the reality is both Windows is not going away but also it is becoming less and less relevant. Targeting a single platform with your codebase, when you can just as easily target many, makes no business sense (and actually, never did).
I find it bizarre you think Swing sucks just because Netbeans is slow to draw (although in versions since 6.0 I never notice on my Mac, Linux or Windows machines). I was on the Netbeans open beta team for 7.0 and suprised you have this slowness in drawing, I can't recall anyone else having the same issue. I wonder if there is something dodgy with your particular system (software rendering?) since *all* of Java 2D is hardware rendered by DirectX or OpenGL shaders (depending on platform). You simply can't get faster drawing than that (unless you somehow have a Sun JRE/JDK before 1.6.0_u10 lying around on your path somewhere) - although it is still possible to write sucky code if you don't know what you are doing.
Oh, so you're very out of date, and have never heard of or used a "Filthy Rich Client" then, and only used Swing apps written by monkeys a decade ago. That's a shame. A Swing app (or any app really) written by a skilled dev skill kicks the web's ass for usability and flexibility (just not for deployment).
The results of Qt are nice but the development model is truly awful. It combines the macro madness of C with the meta-compiler madness of IDL/Corba and all the semantic shenanigans of C++. Sorry, I'll take fully hardware-shader accelerated Java Swing any day, and I'll have it working nicely in my multi-threaded apps too, thanks. Remember that "less is more", by which I mean the relative simplicity of Java is a real advantage in the real world (although as a result Java is 'dissed' due to the snobbery of many code monkeys out there - as if adding keywords and constructs ad-naseum made anything better or more maintainable).
Back in the day I used to build my Java programs on Windows 95 and run them on 64-bit 4-CPU SGI IRIX at my university. These days I never had a problem with 'write once, run anywhere' when I compile on Mac and test in Linux, and then give my stuff to people using Windows XP 32, Vista, and Win7 32/64 and none of them have had a problem with my Java program (bundled as n exe with JSmooth). You must have been doing something wrong?
You jest right? Java has a huge number of libraries, tools, and developers available. This is why Google chose it. Java is also GPL, thanks to Sun. This is a battle over ridiculous US patent laws, not over copyright conditions.