A close look at how Oracle installs deceptive software with Java updates
zdnet.com
zdnet.com
I have a machines which I connect to that do not have any mouse connected. I have no problem in navigating systems with a keyboard and can run through installers probably quicker than most people with a mouse can, but when this dialog popped up for me, I was stumped for about 10 minutes. I employed every shortcut in my keyboard-shortcut arsenal and fell short.
I genuinely felt like this was not just some programming mistake (because the "Next" control was already highlighted waiting for me to hit Enter). It is a dark pattern that was purposefully introduced to their installer to make it impossible for users like me to opt-out of their installer.
A consequence of their deception was that they did get a dozen installs from me, but my dislike for Oracle increased tenfold, and in a quiet-protest, I'll make damned sure that I suggest any alternative to an Oracle product when I have reasonable alternatives (Without cutting off my nose to spite my face).
It is incredibly scummy, and worse it actually encourages Oracle to create insecure software -- at least in the short term -- because each fix is another spin of the wheel.
I find it mind-boggling that people actually put up with (or defend) user-unfriendly behavior like this.
http://docs.oracle.com/javase/6/docs/technotes/guides/deploy...
In Oracle's case, this seems absurd. The money they make from toolbar installations couldn't possibly be very high, could it?
One good one to remember is ALT+Left Shift+NumLock
Then you can use your keypad as a mouse. / and - toggle which mouse button 5 is.
For those of you struggling to enable it under WinXP, you may need to choose "Settings" first in the popup dialog and tick (with the spacebar) "Use MouseKeys".
If you happened to have multiple keyboards installed (e.g. running English Windows + your local kbd settings), LEFT ALT + SHIFT additionally switches between kbd layouts as a bonus, so be sure to disable this shortcut in Control Panel > Regional and Language Options > Languages tab > click Details > click Key Settings.
The above post was satire in reference to Y Combinator staff's reaction to this thread: http://news.ycombinator.com/item?id=5092711
You mean they're trying to do well.
Oracle distributes Ask Toolbar
Ask Toolbar drives searches to Ask.com
Ask.com displays ads from its parent, IAC
IAC is the largest third-party distributor of Google adsThe company that sued Android unsuccessfully, The company that fucked up JAVA, The company that fucked up MySQL, The company that fucked up OpenOffice, The company that doesn't like anything good happening within the tech sector.
I really miss those days when Oracle was highly respected and used to be a great workplace to be a part of.
I doubt that Oracle "didn't want to comply with standards" but what is much more likely was that they had better things to do than pander the syntax nerds. Like making the database faster, more reliable, more secure etc.
Like TPC benchmarks, SQL standards have never mattered to real developers.
Oracle, for all its faults, has actually managed to get the new versions of Java back on track. Sun seemed to be unable to get Java 7 out the door. Oracle did so, and is making good progress on Java 8.
Whether coincidence or causative, I don't know.
It runs more quickly, and it only has a single instance of a single level of nested installers (for the JRE). A couple of years ago, the installation process had gotten simply bleep-awful, especially after they tacked JavaFX onto it, which installation seemed to take even longer than the installation of the rest of the SE package.
Actually, RDBMS folks knew that for ages. There are basically two major types - ones who know nothing but Oracle, a vast majority, and those who have seen Informix or DB2. (SQL Server always considered as a tasteless joke). So, those small minority always knew what a bloatware Oracle is.
And you could configure almost everything you need in two simple text files and monitor and fine-tune almost everything on the go with just a telnet connection. Don't even tell me about Oracle.)
Oracle you could fine tune nearly everything with a single text file through 8i. And even now that's still supported (the pfile vs spfile). Their recovery procedures are also bulletproof unlike the voodoo with say, Sybase ASE to this day.
Sqlplus still is the choice to do most things for old school Oracle DBAs :)
Frankly, I think it's time to pay for software or software services again. I'd gladly pay $5 to $2o (depending on size or complexity) per year for quality, bug-free, ad-free software/services and its updates. And yes, I pay $20 to yahoo to get ad-free email that (hopefully) doesn't sell my information down the road. Is that even an option with gmail? When you think about it, the only person getting money for you being on the internet (with all the software required to do so) is your ISP--is that right? I'd prefer to pony up some money to get a better experience, but in most cases, that isn't even possible.
The way I see it, there should be a single service, something like ninite, where I can give my CC once and manage all my subscriptions/updates. Then it would provide me the software by negociating with the author/owner for a painless, ad-free, crap-free binaries/subscription/whatever. Why is that still science fiction?
The updater is just plain buggy. Ed Bott mentioned the problems with limited user accounts, but I didn't see him mention the issue with jucheck ignoring the update settings:
http://superuser.com/questions/130961/how-to-stop-jucheck-fr...
I also had an XP system where the %appdata% environment variable somehow got deleted. This completely breaks the installer.
I picture some Oracle bean counters decided that once a month toolbar installs is decent revenue for them without pounding their update servers too much with requests to see if the new version is out.
Also, where is ask.com getting all this cash? I don't know anyone who uses it.
Apparently most people who use Java use the ask.com toolbar. </sarcasm off> Edit: With the ask.com toolbar installed, it also changes your default search provider, and it is very hard to put it back in some cases. So I'm sure that's where they get their money to pay for the drive-by install.
I've never seen any of those terrible anti-user behaviours in a Linux package manager, or makefile.
I would be fine with an actual security fix being downloaded and installed silently (without any other payload of course).
What does the 'Windows Philosophy' have to do with the decisions Oracle makes about Java anyway? Do you really think Java follows the 'Windows Philosophy'?
Also, I do not think other platforms can be as plagued as Windows is, because it's a matter of culture and user expectations being driven by that culture. The size of the user base has nothing to do with it.
On Windows users wishing to get anything done resort to installing some crap, even for basic things like uncompressing an archive, watching a movie, listen to some MP3 or viewing a PDF or an Office document.
Things got better with open-source software that was ported to Windows, but considering that Windows is the dominant operating system, the ecosystem is actually kind of lame. If you want quality software, the few exceptions are some open-source apps and some products being sold by some big publishers and that's it.
I have a theory that this is because Microsoft itself encouraged piracy and bundling of crapware, while discouraging indie developers, communities and open-source.
I don't know about philosophies, but Windows is the only OS I have used which suffers from these problems. I have never experienced this on OS X or Linux.
I don't particularly care why, just that it happens.
For one, each having fewer users should not be ignored. 90% fewer users means 90% less potential profit. That's a big number even when you aren't relying on a revenue generation model such as ads.
But not just that - also because the average user on both platforms (particularly Linux) is more computer-literate, and therefore better-capable of defending against this sort of thing.
And on the OS X side, remember that for a long time the Java run-time was distributed by Apple. The agreement to start having it be distributed by Oracle might well have included a "no crapware" provision.
On the Linux side, well, that's where all their enterprise customers live nowadays. They really do not want to piss off their enterprise customers like that.
Linux distros have great package manager and you won't get greedy crap-ware from the Open Source community.
It's a shame that Windows installers have become so bloated. The other day I've seen one with a check box labeled "I agree [to install this crap ware]" just bellow the license text. Really deceptive.
Hopefully the Windows Store will help improve that experience.
So, those companies could grow their profits by 10% by becoming cross-platform? I would think it would be much harder to tweak that installer to get 10% more conversions on Windows than to provide a Mac installer.
Also: it is revenue that they are leaving on the table, not profit. That makes this a slightly less favorable option, but still, I think a company would be stupid to keep even 5% extra revenue on the table.
I see two potential reasons why OS X does not have this problem:
- there aren't as many places to hook into the system. For example, Safari doesn't support custom toolbars (it might be possible to code something as a browser extension, but let's not wake anybody)
- the culture on both platforms is different. Windows users may moan about crap, but in general accept it; Mac users less so. See my earlier comment at http://news.ycombinator.com/item?id=5060019
I call shenanigans.
Just because it hasn't happened to you, doesn't mean it never happens.
I found it very irritating that if you try to install iTunes on windows, it would pop up a window telling you to 'upgrade' your browser to safari.
Sounds like Windows to me.
I'm taking a shot in the dark here, but I remember Nero or similar software coming with such a crap too. We, geeks and nerds, quickly get into our habits to uncheck the checkboxes and all. But workaround have developed, such as needing to check a box to not install the bundled crapware.
In my opinion, package managers are the single greatest innovation to happen to computer usability since the WIMP paradigm.
* iTunes installing several start up processes and Quicktime players
* printer drivers CDs installing all manner of crapware
* OEM bloatware
* Winamp installer recommends all sorts of sponsored crap
* Adobe's terrible update system (ok, not really what we're discussing here, but i resent having to reboot my entire OS just for an update to a PDF viewer)
* and the amount of programs that install start up processes just to check for updates is depressing
* Even Microsoft themselves are guilty of pushing crapware (eg Bing seach bars) in Windows update
....and that's just off the top of my head.
I know this sounds terribly negative but it's fair to say that Windows' current method for allowing developer to run rampant with 3rd party installers is sub par by today's standards. And I think even Microsoft realise this because they're now switching to a package manager with online repositories with Win8. I just hope that their main focus isn't to fleece the developers like Apple do.
On a side note, about that memory resident stuff. A quick look at the Activity Monitor on my Mac suggests similar stories. I have an iTunes Helper process running, don't use iTunes. A bunch of MS Office stuff, irony there. There's one for Spotify, which isn't running. Another for VMWare Fusion which is also not running. A large amount of processes that I have to assume that a number of them are typical system processes but not familiar with such things on a Mac I have no way to tell. Following your thought then I totally blame Apple for their lack of control over their third parties.
But again, why exactly is this the fault of Windows and/or Microsoft? Are you saying that Microsoft should have had a heavier hand in terms of third-parties? Seems to me, considering history, they would have answered to the Justice Department for doing such a thing. Keep in mind that almost every single one of your examples come from third-party sources outside of Microsoft's control.
Are you suggesting that it is impossible for nefarious entities to get crapware, bloatware, or other unwanted things into Linux or OS X through social engineering or shady practices? My Mac comes with all kinds of iSoftware that I don't want/need/use so can I call those bloatware?
I'm still waiting for enough examples of crapware bothering people on a day-to-day basis that can support the statement that such behavior is the "Windows philosophy".
Although, I grant to you that if you somehow managed to get all that stuff on your system at the same time then that would affect your day-to-day because of eventual performance issues. But then again, in most cases if people would bother to read what they click on then they'll avoid most of this stuff. It's the ones that install themselves without your knowledge are the truly offensive crap.
I think it's rather that almost all Linux software is either open source or installed through a package manager (usually both). Open source developers would fork and remove any such behavior if the program is at all worth dealing with. While package managers would not be likely to include such annoying software to begin with.
And if you say that this won't happen, because software will still be installed through a package manager than well... maybe that's (one of the reasons) why Linux doesn't have a similar non-tech-savvy userbase as Windows.
One of the main reasons it took me many years to switch to Linux was the lack of games. Many others felt the same way.
If I was Steam, I'd use the sales to customers whose primary platform is Linux to fund the porting of additional games, either through grants/incentives to developers, patching of Wine, or both. The more acceptable Linux becomes as a viable alternative for gamers, the stronger the uptake of desktop Linux will be.
As for package managers, money talks. I would have said the same thing about someone sliding in crapware with a Java update some years ago.
No, on Linux the Java plug-ins simply don't work at all most of the time.
(I work on a project using a Java applet, and frequently get negative feedback from colleagues running Linux about this issue.)
I bet the vast majority of those users having problems are running OpenJRE/JDK, which is known to have issues with some Java applications (though the issues are slowly being resolved; bit by bit).
Sadly, because of licencing issues, most distros only support the open run times in their main repos, but adding Oracle JRE isn't much trouble.
Taking up real estate in my toolbar is basically criminal trespassing, so throw that in. I mean, it's not like in real life you can just say to an inattentive person, "I'm about to break into your house unless you tell me no" and have it be okay.
1. The user has an opportunity to opt out.
2. Calling Ask Toolbar "crapware" is only an opinion. Someone may actually want it. sniggers
I think bundling software is fine so long as it is relevant and genuinely useful. Ask Toolbar fails on both accounts. Bundled software shouldn't be offered during minor updates or security fixes... or at the very least, during these minor updates, it should be opt-in instead of opt-out.
But now I really think this is a good thing to recommend under windows.
I will still continue using OpenJDK for server projects under Linux, but will press for different solutions whenever installation of Jav on a Windows machine might be required.
As someone who is not invested in either camp, between the two, .NET seems like a much better place to be invested in right now.
Edit: Thanks a lot for the replies, I'm much better informed.
The three leading Ecommerce platforms (Oracle ATG, Hybris and IBM WebSphere) are all done in Java.
There is huge demands for Java developers working on Web and Enterprise systems the world over. The average Salary for Java developers is pretty high in most places (london and Sydney) and the day rates you can charge as a contractor are very good.
There also seems to be more open source and technical community in Java.
I am glad that I went down the Java route.
also, Most Java development jobs nowadays focus on the web and server side stuff, this is followed by mobile (such as android) and embedded (such as TIVO boxes).
Java looks bad? You're probably talking about certain swing applications which are now very rare on the desktop.
Java is slow? You clearly have no idea how fast the JVM can interpret and JIT java nowadays.
Java is insecure? You're mainly talking about applets which are an ancient technology on their way out (slowly). In terms of actual JVM security. Every product has its security issues.
You seem very ignorant, your java experience is probably from the past e.g. J2EE1.4 and old swing apps.
Modern Java is an good language on a great platform. There's a reason why it runs some of the worlds biggest ecommerce sites and worlds fastest trading desks.
Pycharm is an example of one of the apps I am talking about. It just feels like it struggles at times, eventhough I have a fairly new machine.
Java was the first language I learned while going through college but I find the verbosity to be irritating.
Swing is probably going to be slower (maybe?) than some native windowing framework.
But Java as a language running on the JVM is certainly not slow.
I've just been looking up pycharm and it seems that the slowness issues are to do with things like opening files and doing parsing. These things are likely to be slow for anything but the language they are written in.
It depends on your POV. I've had to deal with an enterprise Java crapware app that was essentially a terminal emulator for an old mainframe... except that it required more than 4GB of memory on the desktop to work appropriately.
The mainframe itself has 2GB of RAM.
Fun fact, several Windows versions have included a security mitigation technology called ASLR (Address Space Layout Randomization) that breaks a large majority of exploits and raises the bar significantly. Exploit developers and penetration testers love Java, because any machine that has it installed (most of them) breaks ASLR, re-enabling all of those exploits that Microsoft had otherwise mitigated.
Shorter: "I only know anything about client-side programming."
After two months of C#, I remember thinking to myself, quite clearly, "Oh, thank God, the nightmare is over."
Debuggers that worked. Native calling systems that actually interoperated well. A set of classes that weren't horribly overdesigned and under-implemented.
Best of all, no culture that insisted on factories that made factories that made factories.
Writing Java on phone platforms is fine. But the enterprisey stuff is death on roller skates.
Hey, if you can stand it (my cousin does), then you might make a bunch of money. My cousin spends six months hacking Java for a bank, then six months vacationing. I prefer to do stuff that doesn't make me contemplate washing dishes for a living again.
.NET has its warts, but it's not cancerous the way Java turned out to be in the hands of the architecture astronauts.
I have spend most of my career doing Java6 JEE6 and modern Spring and it all feels quite modern. I did a lot of C# at University and it is a good language and platform but I don't think it's better than Java. New / modern Java is fine, it's old java that you want to avoid.
imo C# is an improved java, but C# open source ecosystem is just anemic compared to java.
By that logic everyone would still be using Cobol or Fortran for new development. Moreover neither Rails, Django, or Grails are brand spanking new anymore. Those projects are mature. If you don't want to stray too far away from the jvm comfort zone, Grails is actually built on top of Spring and Hibernate and it's still maintained by the Spring team.
The nightmare for me has been over in the mid-nineties, when I discovered Unix through Linux.
There's no way I'll ever be going back to working on Windows. I'd rather go work as a plumber or a truck driver (not that there's anything wrong with that) then have to work on Windows ever again.
C# / F# might be interesting, but using any Windows as my OS is a big no-no. Never this nightmare again.
And, nearly 20 years later, the great thing is that a lot of devs previously working on Windows are now working on OS X (anybody disputing that trend is a fool).
Major win for Unix with both Linux and OS X. Not to mention all the devices running either iOS or Linux / Android.
The nightmare is over: Windows shall never be the OS powering all these servers and devices out there and hence .Net shall never be the dominant platform.
It's not that .NET has its warts (it does), it's that Windows has its ugly warts and I'll never ever be using that inferior OS ever again and I'll never ever again will be forced to deploy on an Microsoft stack.
In the mid-nineties I considered quitting IT. And Linux saved me. And now OS X. Thanks.
These days, you can be a C# developer without having to do an ounce of "Microsoft Stack" programming if you didn't want to.
IntelliJ supports JavaScript and JSP debugging as well.
Client-server development using EJB 3.x is way much better, cleaner, and simpler than .NET, sorry, this is something that I don't think you can argue elegantly.
.NET culture when it comes to open source is sub-par while Java is very rich. Spring, Tomcat, Jetty, Hadoop, HBase, Eclipse, NetBeans, Maven, Ant, the list goes on. These are mature and high profiled open source projects wherein .NET I have never seen an open source project reached that level of acceptance.
While Java has this sub-culture of factories that made of factories. .NET has this culture of fighting with the latest and grandest libraries that Microsoft launched once every 6 - 12 months.
Enterprise .NET is not at the level of Java yet (compare Message Queue, remoting, security, and other capabilities .NET are still lagging).
.NET has its cancer in its own way.
I honestly believe that you have not used Java that deep professionally.
After you install it updates to the .NET framework show up in the "optional" windows updates.
There are certainly standalone installers as well: http://www.microsoft.com/net/download
But if you're producing client-side software that's dependent on the .NET framework then you most certainly will make your installer "bootstrap" the installation of the correct framework for your OS language and hardware.
.NET is seeing a small renaissance with ASP.NET MVC and what the Server teams are putting out, but Java is also gaining popularity again as a way of running Rails apps quickly and with Scala.
Both platforms have enough legacy apps out there for a lifetime of maintenance work, if that's your sort of thing. Cleaning up after outsourcing companies is lucrative.
However, the .NET open source ecosystem (while greatly improved from years back) still really really sucks. Historically, this is directly MS's fault (codeplex helped but it still will never be able to undo the damage MS did early on). I just think it's a waste of time having to reinvent wheels that pretty much every other major platform (Java, PHP, Ruby, Python, etc...) has plenty of. I always hate having to do extra work that I feel is entirely unnecessary, which happens a lot on .NET.
Java's JVM/bytecode infrastructure on the other hand has undergone a renaissance as a VM platform for a lot of very cool languages: Scala and Clojure being the two big examples there. But that's Really not the same thing as Java, obviously. And there's Android -- a completely different ecosystem, and somewhat truncated as a Java dialect, but still basically the Java language and able to employ most of the libs you're used to having: Guava, Guice and so on. No dynamic code gen, which stinks, but I know why they did it. So if you have Java under your belt and want to get into mobile stuff, that's a huge plus.
So, as a general-purpose language skill, Java is still really, really important to know and will have legs for a long time to come. ASP MVC is a great framework, and if you can't work in something like Django or Rails or the like, it comes in nice 3rd or 4th place in terms of making for general coder happiness. C# is a far more progressive and interesting language than Java, but that's a philosophical difference between the gatekeepers of the two languages: Java intentionally moves slow for the sake of stability and continuity, C#'s minders have apparently embraced a little of the 'move fast break things' attitude of some parts of the open source world. I prefer the latter, but understand the rationale of the former.
Me, I'm a Rails coder these days but also get to hop back into Java for Android dev and the rare foray into ASP work and they all have strengths and tradeoffs and they'll all be around a long time. The only thing I think I would avoid on principle, for my own sanity, is any enterprisey J2EE framework. That truly does feel like a massive leap backwards.
MonoDevelop is a poor man's Visual Studio, but it's a lot less demanding and runs on OSX. Backend frameworks like Nancy.fx are really great for being even simpler versions of MVC, too.
What's wrong with the latest version of Spring or JEE (please remember this is NOT J2EE).
I'm sure Spring would make dealing with beans a lot less painful. I know there's more to J2EE these days than Beans and WebSphere and the whole early-2000s debacle that frankly gave Java a bad name and enabled the rise of php and Rails and the like.
Struts is Struts and never really appealed to me. Wicket looks more lightweight but still seems config-heavy. I think that's the one thing, from a coding standpoint, that makes even contemporary Java still feel 15 years behind: configuration hell. It's just part of the whole Java mindset, that it's never really shaken (even in Android!), that a major part of my coding life should be spent configuring the framework. C# and .NET has moved away from that more and more and to me it's a much better environment for it. This is all subjective tho. YMMV.
So what do you use? What makes you happy in the Java world these days (I'd really like to hear).
J2EE is horrible.
JEE is awesome.
Comparing J2EE with ASP.NET MVC is not fair just as I would compare ASP.NET with JEE or Spring MVC :)
Rails -> Spring MVC (albeit we still don't have a mature ActiveRecord but I concur that the Java world prefers the Repository pattern a'la DataMapper/Merb)
The whole Rails ecosystems is pretty much:
1) Spring MVC
2) ORM (Hibernate/JPA2 or one of the newest tool is Spring-Data)
3) Maven == bundler + rake + gem
4) JUnit
5) Some sane folder structure
For a start, J2EE is history, anything using J2EE is a legacy project. JEE6 is the latest Java Enterprise Spec and it's fairly lightweight, you have to use almost zero xml configuration (everything is annotations) and you and you can turn a plain old java object into a bean with just one annotation (@Stateless) and you can even inject beans anywhere with just one annotation.
The same is true for the newer versions of Spring, pretty much no XML config required anymore.
I use JEE6 and Spring, these are as powerful as ever but with less and less actual implementation nightmares with every release. They have looked at the other frameworks and stolen all the best ideas in their latest form.
Play! for java is also a great framework although it doesn't have much adoption by anyone I care about.
The only thing that makes me happy in the Java world lately is Scala. It has it's flaws but is much more pleasant that old school Java.
You don't need to use XML its just an option now. Annotations work well.
Disclaimer: Was a Java guy, working with C# exclusively now by day (F# and Clojure - not Clojure-Clr - are my pet languages at night).
In my opinion the languages (specifically Java vs. C# now, ignoring other languages for now) started out really, really close when C# was new. C# gained a lot of nice features, while Java was - euphemistically - 'stable'.
Thinks that made my day and made every sporadic try to get back to Java (or work on Android) a chore: .Net events, properties (later automatic properties), usable generics, delegates, yield based generators/enumerators and the reason they were added: LINQ. Type inference aka 'var'. Basically every release brought half a dozen interesting features (and new technology, WCF/WPF/Silverlight/Workflow), while Java was sleeping as far as I could tell.
I understand the latest release of Java now came closer again, but C# is still quite ahead in my opinion.
Tooling: Visual Studio. Now, I'm not a total fan and some releases are better (2008, 2012) than others (2003, 2005, 2010), but it's a decent tool for most all your developing needs and ranges from free to 'includes the kitchen sink and costs $$$'. It supports three languages out of the box (F# is very interesting and a fully supported language!).
I like IntelliJ and sympathize with the Eclipse project, but for me the VS experience is more streamlined, simple and nicer in general.
Libraries: If it's _really_ popular in the Java world, you'll find a port (think nhibernate, log4net) or something equivalent.
I wouldn't want to go back (C# -> Java), but I DO have the jdk around for Clojure (and I'm still watching Scala from a distance).
It's a decent tool but I think the alternatives for other platforms are either equal or better. imo MS is typically playing catchup in this area now.
> Libraries: If it's _really_ popular in the Java world, you'll find a port (think nhibernate, log4net) or something equivalent.
This is what truly makes .NET a no go for me. There's just too few non-paid and open library equivalents compared to almost any other platform. Not mention the libraries in other platforms tend to have more features. The .NET open source community is still pretty small and weak, and I just don't see that changing (even with CodePlex it hasn't really had any drastic changes).
(Maven) m2clipse alone is a very good reason to learn Eclipse.
You can't download 3rd-party library with Documentation _and_ Source Code _and_ Navigate to the code without having to setup anything _and_ included in your build like you would have in.NET.
It's a big plus for incorporating and debugging code when you need to do so.
I've done C# and now fully Java (and JavaScript) and I wouldn't go back to a more locked and dumbed-down ecosystem.
C# the language may well be better than Java but that alone is not enough of productivity boost.
Eclipse, Maven, FindBugs, CheckStyle, Jenkins, Tomcat, Jetty, rich 3rd-party ecosystems are the key of my productivity boost.
VS.NET, NuGET and having to write either MSBuild or NAnt plus IIS (express or not) aren't cut it. Not enough to be agile.
Maven: I .. never got that one. I guess the parts that make sense to me are covered by nuget. But I might be totally ignorant here.
CheckStyle -> StyleCop ? Jenkins supports .Net Tomcat makes no sense in this list for me. IIS? Jetty: See above? Maybe the ASP.Net dev server, depending on why you'd list jetty?
I rarely feel the need to do a lot in msbuild files. I might add build tasks (StyleCop?), but that's about it. Deploying is not in scope here (and for that I'd probably go for WiX. Not a huge fan of MSI, but that's what the platform uses and what other tools can manage).
I appreciate your opinion and read your sibling post, but I guess we're both a bit ingorant of the other guy's platform?
Jenkins: https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin Sonar (mentioned in your sibling post): http://www.sonarsource.com/products/plugins/languages/c-shar...
Incidentally the Sonar page for C# lists a couple decent code quality tools for the .Net side of things.
But in the end if will remain a matter of taste & experience and I'm very certainly biased.
Some of the projects that I worked on, albeit huge, Eclipse still performs pretty nice. While in other instances I do notice issues with the performance.
Tomcat and Jetty make a lot of sense if you use it with Maven. The ability to compile, deploy and bring up your App Server is something that you don't get for free in .NET
http://mojo.codehaus.org/tomcat-maven-plugin/deployment.html
mvn clean install && mvn tomcat:deploy <-- win
NuGET only deals with dependencies but doesn't deal with packaging, running unit-tests, running integration-tests, running PMD/CheckStyle/FindBugs as part of your build.
All of these things are important for CI/Continuous Delivery.
Oh almost forgot this one: JavaFX 2 may be way behind of .NET WPF but JavaFX 2 comes with a tool that can generate installer for OSX App Store (will bundle JRE automagically), Windows, and other platforms. WiX can't do that.
I may be ignorant of some of the .NET stuff but as of 2010 - 2012, the last time I used .NET, .NET is still lagging behind Java when it comes to tooling.
I've also used Java for a while, the whole Spring MVC, JEE6, Eclipse, IntelliJ.
If you're willing to live in Windows OS platform, you should go with .NET, no question asked. Forget about tooling and everything else.
If you want more flexibility, more choices, etc, Java is your choice. (There's also Python, Ruby, and the rest but let's scope it to Java).
.NET culture is heavily influenced by the culture of Microsoft which means:
1) Less Open Source, More mISV (more "pay" products)
2) Windows/GUI, less command-line (has changed a bit but still not there)
3) Fire and Motion http://www.joelonsoftware.com/articles/fog0000000339.html
#3 is important because MS makes money from tooling as well. When I was there, the internal chatter was "tool will be out of date every 2-3 years". Please make your own conclusion.
Some people said Java had this period of "sleeping" which was true. But during that time frame, we've seen TONS of open source projects that are very mature, battle-tested, and probably everlasting.
We've also learned a better way to write Java code (HN made such a big deal of Factories yet HN never acknowledge the best breed of Java code out there, it's a typical of a community like this anyway).
Thus that "sleeping" period is being used efficiently to stabilize things.
When it comes to tooling, Java beats .NET by miles. Java deployment packaging (JAR for library and WAR for web-app) is one of the best out there and it's been stable for many many years. (http://dirtsimple.org/2004/12/java-is-not-python-either.html)
Java build and dependency management tool is also far ahead of what the .NET has. Maven is far beyond NuGET and MSBuild (shrudder).
Integrating Java build with popular Continuous Integration server like Jenkins, TeamCity is waaaay easier than .NET.
Eclipse foster a good community of open source and free tools/plugins which put VS.NET to shame BUT BUT BUT experience may vary when using Eclipse. Eclipse is like black magic and moody: if somehow you're in the position that your Eclipse is stable, it's one of the best IDE out there.
Eclipse has its own built-in "app-store" that makes installing plugins sooo much easier, seamlessly, and faster.
m2clipse, a Maven plugin for Eclipse can perform the following steps:
1) Download dependencies
2) Download the dependencies javadoc (auto-complete will show the code documentation)
3) Download the dependencies source code (#1 only download the compiled code) if you ever wanted to "navigate to the implementation of a method"
It does this seamlessly without you breaking a sweat.
Tools like FindBugs and CheckStyle helped to improve your code hygine/style and EclEmma can tell your Code Coverage. All of these are free.
Java has rich and mature tools and libraries:
1) Sonar => http://www.sonarsource.org/
2) Jenkins => http://jenkins-ci.org/
To put it simply, the Java community has a very strong Software Engineering discipline and continue to find better ways to develop whereas the .NET/C# community is either following Java lead or serving its own master: Microsoft.
I'm glad I'm out the .NET world because it was soo much limiting and "capping" your day-to-day productivity.
You would think that after several years of conning people into using their search engine, the employees at Ask would feel dirty to have to engage in such tactics.
EDIT: I found: https://github.com/alexkasko/openjdk-unofficial-builds
Irony,
With Oracle, your are SURE.
...is there any other simpler security model than this? Java even seems a simpler and more "well behaved" language than JavaScript, and JVM bytecode is said to be even simpler (though I'm not an expert on this...), and browsers had they own share of Javascript related exploits but people rolled updates quickly, acted responsibly and didn't do anything particularly stupid (as opposed to the described crapware incident perpetuated by Oracle).
EDIT+: one can buy browser exploits cheaper on "the x market" and they are more useful than JVM exploits so "security" is not Java's Achilles' heel, and it's Swiss cheese all the way down if you at most web-facing software unfortunately...
Oracle's Java plugin for browsers is a notoriously insecure product. Over the past 18 months, the company has released 11 updates, six of them containing critical security fixes. [...]
The updates and security fixes include not only the plugin, but all the Java runtime that is much bigger and complex. (For example, one of the updates was: http://www.oracle.com/technetwork/topics/security/javacpuoct... ). This is like accusing Chome or Dropbox of being insecure, because they do a lot of updates (that are automatic, invisible and don't offer crapware).
If you go to Oracle's Technology Network area to download (or Google for the specific version e.g. "java 6u38" or "java 7u11 oracle" because of all the press) you can agree to their binary license and download crap-free offline installers.
The link for 6u38 is http://www.oracle.com/technetwork/java/javase/downloads/jre6... and the link for 7u11 is http://www.oracle.com/technetwork/java/javase/downloads/jre7...
I will admit tho, for traditional desktop apps, it is very dead.
Kidding aside, I've installed the Oracle JDK on dozens of Windows machines and not once have I been prompted to install a toolbar or bloatware.
1. Navigate to java.oracle.com
2. Select Java SE.
3. Select to download JDK SE 7u11
4. Accept license agreement
5. Download Windows x64
6. Open installer
7. Select to install "Development Tools" and "Source Code" (disable "Public JRE")
8. Wait and then close installer
9. Run c:\java\bin\java.exe
10. Review Windows' "Programs" and note only JDK has been installed; no toolbars
11. Celebrate
I suspect many people are installing the JRE, which is something I've never done. Since the JDK can run Java code, why install the JRE at all?
Shady!
These programs seem to rely on getting the user to make a choice during installation time. Windows is the only major OS that seems to rely on "installers" being programs in their own right.
For example on debian, .deb packages provide a standard installation process. Whilst it would still certainly be possible to inject all types of crapware into a .deb the actual install process is not really conductive to this, because there is no way (AFAIK) to pop a custom screen during the install.
The one from java.com does.
I'm not 100% certain though.
BTW, there is a process to install java without the installer and without admin rights on Windows. The process is described on say StackOverflow but I have it scripted.
I should put it up on github sometime!
From what I've heard, I guess it comes with Java installers from 3rd party sites.
Enter big red. Talking to brain-washed zombies cannot feel very different from talking to Oracle's sales drones and customer relation dummies. You were talking about "A", they would start trying to sell you pricey-addon for the database when you weren't even talking databases in the first place. Whoever was a useful tech contact inside Sun before now turned into a walled-off zombie as well and I guess I was lucky they didn't just slap a price tag on picking-up the phone or simply answering an email. And to top it off I had to suffer one of their pre-sales dummies loudly telling an oh-so-ridiculous story how, can you imagine, bigcorpA was running tomcat(!) in their production environment! And not the abomination from hell that Oracle gets away with charging huge amounts of money for!! Well can you imagine that!!!
Another case of too-big-to-fail and nobody ever got fired for buying Oracle, hm?
I've been wondering because I think that my preferred managed environment (.NET) is doomed if Microsoft continues keeping it tied to Windows. On the Microsoft side, I suspect that Microsoft's market share in the server and enterprise space is going to continue dwindling for the foreseeable future, which means that their current plan for making profit is far from certain. But neither Sun nor Oracle seem to have figured out a way to distribute Java for free to the world at large and make a profit off of it, and it's hard to imagine that Microsoft is any more capable of pulling that rabbit out of its hat.
Perhaps the trick is that you don't try to make money on it, at least not directly. And there's a great project out there that's trying to do it that way. But, well. . . . ugh. I love Mono; it seems like it has everything going for it. From a technical standpoint it's been rapidly closing the gap with Microsoft's implementation, which I suspect means it's probably already ahead of the Java platform in many respects. The flagship language is certainly way ahead. And it has the singular distinction of being the only Free platform in this sector, which would make you think that folks would be extremely interested in seeing it win. Why that doesn't seem to be the case continues to mystify me. I know it's still got a few Big Business cooties on it, but it's got way, way, way less of them than Java does.
Traditionally you sell a development environment. You release a command line compiler for free, and a full development GUI for money.
Then you make some useful (but non core) libraries and sell those as addons.
Sell trainigns, certification, support (QA tested fixes for bugs that affected you before they are released to the public). SUN was doing all of that and was pretty successful. The hardware part of the bussiness failed them because of flood of cheap comodity servers.
Professional services. Hardware sales. Turnkey solutions (you want to support industry X using Java? ...). Development tools (to the extent not provided by third-parties). Certification/compliance. Associated products (nice Java app you've got there, need a database to go with it?).
Here's a thing: making money off of software by itself is hard. One of the lost messages in the recent trash-talking of Microsoft is that the fall of the House of Redmond also means the fall of software as a standalone, unit-sold, high-value product. Nobody but nobody else operates this way, certainly none of the current tech leaders: Google, Apple, Facebook, Amazon. Two sell ads, two sell things. None sells software.
Exhibit 1 the trainwreck that was the Solaris firewall. I don't think anyone in the world understood or installed the first version. Then they introduced a 'lite' version which perhaps a few sorry souls used. Then I think some sane person in Sun said 'fuck it' and they then offered BSD's pf firewall. Which was what everyone used anyway as it had been available for quite a while from outside sun.com.
This experience mirrors mine with Oracle as well. The database is good and support excellent. The rest of it (I'm looking at you Oracl Fusion Middleware) has an extremely high WTF rate and the consulting and support staff often have no idea.