Tuesday, 27 December 2005

Java or C# as a Next Language?

Learning Java or C# as a Next Language?


Re:Just Pick One and Learn it Well
(Score:5, Informative)
by ForumTroll (900233) Alter Relationship < > on Friday December 23, @07:54PM (#14330262)
I use Eclipse more than Netbeans so let me give a few examples from an Eclipse developer's point of view. Note that some of these issues may have been addressed as it was a while ago when I looked at Visual C# Express. Also, remember I'm talking only about the *free* Visual C# Express and not Visual Studio.

* Obviously, unlike Visual C# Express, Eclipse is free and comes with no restrictions.
* Eclipse is open source, so it's far easier for developers to customize and build a platform around.
* Due to the way Eclipse is structured it's very easy to write plug-ins and because of that Eclipse has a very long list of available plug-ins. Plug-ins exist for practically everything a programmer would normally require. Not only does Visual C# Express not have plug-ins but it doesn't even have macro capabilities.
* Eclipse has far better refactoring capabilities. It makes it very easy to restructure your code, and it can handle the vast majority of the details (renaming, extracting interfaces, encapsulating fields etc.) itself with no worries.
* If you're programming in Java, Eclipse's code assist can be linked to the source code and the documentation for not just the standard library but ANY library that the project uses. IIRC, you can do this with Visual C# Express but it's a pain in the ass and it makes you jump through hoops for everything other than the standard library. In Eclipse, this feature is also available for other languages through plug-ins. Another thing that sucked about Visual C# Express was that the code assist would only show one option at a time so you would have to scroll through the list one by one.
* Eclipse also has a wonderful Javadoc engine which can make writing good Javadocs extremely simple and less time consuming.
* The code formatter in Visual C# Express sucks and it's not consistent enough that it can be used on large projects. I like to check out my project from SVN and use the code formatter to make the code appear in the style I would prefer. Then before checking the project back in, use another code formatter template to make sure the code that enters the repository in one uniform style. Not only is the Eclipse formatter extremely consistent but it's also is very easy to switch between templates and has nice simple hot keys.
* Regardless of the language, it's much easier to change compilers/interpreters with Eclipse and it supports many more compilers/interpreters.
* Eclipse has built in CVS AND SVN support while Visual C# Express has no source control integration built in.
* I can use Eclipse with a large number of different languages and still continue to use many of the features.
* Eclipse can be used for building, testing and running Web applications with a number of different server architectures.
* Eclipse uses ant as the standard for building projects. It also has nice configuration utilities for monitoring the execution of a build file, and for creating/modifying a build files.
* Eclipse has excellent JUnit integration which makes testing your code easier, while Visual C# Express has no unit testing integration at all.
* Eclipse has very nice database integration plug-ins available. Including plug-ins that generate diagrams, UML etc.
* Eclipse has good support for Hibernate/Spring/Struts/JSF and a variety of other popular frameworks.
* Eclipse has superior debugging support for a wide array of debuggers. Note that I said "support for a wide array of debuggers". Debugging in Visual C# Express, from what I saw in my brief experience with it, is actually very well done and maybe on par (or even possibly better) than Eclipse.
* Eclipse has better hot keys. Simple refactoring operations almost always have convenient "what you would expect" hot keys.
* Eclipse has navigational hyperlinks that I can use without touching the mouse.
* Visual C# Express doesn't have any support for remote debugging.
* Visual C# Express doesn't have any support for mobile development.
* I can use Eclipse on any of the major platforms and not just Windows.
* Eclipse doesn't ask me to register or sign up for anything.
* Eclipse is not made by Microsoft.


I'm sure there's more too. Some of these points may be outdated and if so please point it out. However for me, the fact that Visual C# Express is only available for Windows removes it from being an option all together.
--
"If you can speak of technical things only in technical terms, you do not understand them."- Albert Einstein

================

It's good advice...
(Score:5, Interesting)
by Da VinMan (7669) Alter Relationship on Friday December 23, @05:27PM (#14329588)
I've got 8+ years MS tools based experience and 2+ years with Java (and some Python and Ruby thrown in for good measure), and I would totally agree. Neither C# or Java is perfect. They're both strongly typed, proprietary, virtual machine environments. Neither one is true open source (despite the rich set of open source applications developing around both). And neither one is appreciably better or more powerful than the other across the board.

The question comes down to economics (which one do you know you'll be able to get a job using) and preference (which tool set do you like better Visual Studio 2003 or {Eclipse | JDeveloper | JBuilder | IntelliJ | NetBeans | WSAD | ?}). You have to go with the one that meets those two criteria. Neither choice is bad and no one gets fired for choosing either of the two.

Oh, and fer-cryin-out-loud: don't choose something because you think it will make someone else happy or make you seem more "uber geeky" or whatever. Just do it for you and the rest will follow. And whatever you may think now, you are NOT married to this choice. That "wall" that everyone seems to imagine between Java vs. .NET is not a real technical barrier; just a cultural one.
--
Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
---------------

Java is more credible as a cross platform language
(Score:4, Interesting)
by cryfreedomlove (929828) Alter Relationship on Friday December 23, @03:36PM (#14328864)
C# was invented for one reason: locking sytems into a windows deployment. There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.

Java on the other hand is a cross platform environment supported by multiple competing vendors. That will leave you more nimble to develop and deploy on a wide variety of systems. There are great JVM's available from Sun, BEA, IBM and others. There are several great commercial and open source implementations of java servlet containers. Can C# really say the samr thing?-------
---------------

My two cents...
(Score:5, Interesting)
by Savage-Rabbit (308260) Alter Relationship on Friday December 23, @04:33PM (#14329295)
Java on the other hand is a cross platform environment supported by multiple competing vendors. That will leave you more nimble to develop and deploy on a wide variety of systems. There are great JVM's available from Sun, BEA, IBM and others. There are several great commercial and open source implementations of java servlet containers. Can C# really say the samr thing?

I agree, Java is the only truly cross platfrom alternative despite the fact that C#/.NET is being implemented on non Microsoft platforms, Java will remain the only really usable cross platform alternative for some time to come. That being said there are still white patches in the standard Java class libraries; like RS232 support for example which, surprise, surprise, is still widely used. The last time I looked this was only implemented for Sun and Linux but not Windows, OS.X and other OS'es (you had to install a special third party implementation of the standard RS232 interface from Sun). Although I like C# better than Java for a number of reasons I still wouldn't rely upon C# for cross platform application development which is something I see as an essential capability to have for any future software product that can afford it performance wise. I would only start implementing something in C/C++ if I really needed close control over memory usage, the ability to do heavy duty performance tuning etc. For anything else it really just pays (money wise) to throw hardware at the problem and develop in Java or C#. But since the .NET implementations for the various OS'es will be developed by different parties (Microsoft, Nowell/Ximian etc...) rather than a being largely developed and/or coordinated by one party (Sun) like Java plus I wouldn't put it past Microsoft to use dirty tricks to make sure that .NET will always be more stable on Windows than other platforms.
--
Follow cigarsmoke, find fat man there....
========

Definitely Java
(Score:4, Interesting)
by Anonymous Coward on Friday December 23, @03:36PM (#14328870)
Mono is a complete non-starter. Check out how RedHat engineers now have a natively compiled Eclipse running, that also has stubs into Glade development. Check out this demo:

http://overholt.ca/wp/index.php?p=11 [overholt.ca]
=============
by iabervon (1971) Alter Relationship on Friday December 23, @03:52PM (#14328995)
(http://iabervon.org/~barkalow/ | Last Journal: Saturday May 31, @01:01AM)
The language changes in Java 5 are sufficiently significant that they eliminate most of the ways Java was awkward up to that point. Actually using the earlier versions involves a whole lot of annoying kludges which make it unnecessarily hard to learn and use. I think that Java is a better design overall, but they're similar enough that you may as well learn whichever has a more expressive version being taught at your school.
===========
http://overholt.ca/wp/index.php?p=11

===============

Client or server side software?

(Score:4, Insightful)
by kjeldahl (65177) Alter Relationship on Friday December 23, @03:59PM (#14329041)
(http://kjeldahl.net/)
Depending on what kind of software you want to write, and for which platform, you might want to factor in whether you are going to develop client-side or server-side software. My personal opinion is that very few Java based client application feel native to any environment. A java client application looks "java" like. So if you are aiming for Windows client side applications, C# is probably a better choice for the future. If you're aiming server side, and you are already "invested" in Linux/Unix server systems, Java is probably a better choice right now.

============XOXOXOXOXOXOXOXOXOXOX======= ===
Databases are by no means an easy product category to understand. Many of the big players now offer free or "light" versions of their databases, but comparing them all is no easy task -- as we found out.

http://www.builderau.com.au/architect/database/soa/Road_test_Four_databases_tested/0,39024547,39224962,00.htm



For many businesses, a database is the vital organ that lives, breathes, and protects precious data -- the treasured jewel of their enterprise. Everything they know, and every way to know it, is dictated by these all-powerful tools.

Even skimming the surface of their capability is a daunting prospect. To test them completely would require not only complete and established infrastructure but ways of simulating workloads, demands, data types, queries, and so on.

Because of the great diversity of database, some context is undoubtedly required. Our scenario in this comparison calls for a database solution for a relatively small e-commerce company with less than 200 employees. The company sells DVDs and books over the Internet and will initially have around 1000 customers and an online inventory of 50,000 items.

Like all companies, this one has plans for future growth and would like to see a customer base in the hundreds of thousands, and would like to diversify their inventory to the point where millions of items are available online.

The database must look after their stock, customer lists, and seamlessly integrate with their accounting system for billing and purchasing.

Initially the database must run effectively on a dual processor or four-way server but must be able to scale up to a small server farm should the demand exist.

0 Comments:

Post a Comment

<< Home