Yeeeeeeeees! Learn it. Do it now! Use the book Head First Java. Read up!
seana11 wrote:
Yeeeeeeeees! Learn it. Do it now! Use the book Head First Java. Read up!


meh. Python might be the best of the two choices, since it'll probably teach you enough to either delve deep and become a Pythonguru or learn enough to delve into new languages. Java isn't a good starting language, at least a good first computer language. With python you don't have to worry about all the "bureaucratic details" as I call them (makefiles, confusing command line invocations, many many files for different classes and such, etc.) and just worry about the actual writing of code. Just my opinion.
seana11 wrote:
Yeeeeeeeees! Learn it. Do it now! Use the book Head First Java. Read up!
Can you provide some sort of logical underpinning to your order? More specifically, explain why you recommend Java so vehemently?
Quote:
Fully cross platform APIs including support for Graphics, Windowing and Multimedia. All future APIs will be cross platform. Java has even more APIs than Windows. Look at the current proposals

Mature.

LOTS AND LOTS of libraries available. Many are free and/or open source.

High density of OO design patterns put to practise compared to C#/.NET. This makes developing complex applications much easier (at the cost of making 'my first text editor' type projects slightly more difficult).

Well designed APIs following good OO practise.

The Java Community Process allows people with an investment in Java have a say. New Java features can be proposed, discussed and voted for in a open democratic forum. Microsoft does NOT have anything like this which is unfortunate for anyone investing in .NET.

Apache.

Currently supported by multiple commercial vendors (not one).

Although not recognised by any international standards committee, Java is an open standard governed by Sun and the JCP members (or which there are MANY). C# is an ECMA standard but without support from Microsoft, very few third parties have been willing to implement it. Sun also tends to be less secretive than Microsoft about their products. The C#/CLI ECMA submission is also just a subset of the .NET framework. It has yet to be seen whether any future APIs for .NET will ever be submitted for standardisation (it doesn't look good).

Smallest unit of distribution is a class (.class file). This helps in application development, debugging and deployment. Having a one to one mapping between types and the file system is simpler because file systems are well understood.

Good IDEs are available (Netbeans, Eclipse, Together). Many are free and support more features than VS.NET.

Swing is well designed and utilises the MVC design pattern extensively. Windows Forms pales in comparison.

Swing is more powerful than SWF(System.Windows.Forms). For example, border styles can be plugged into any component using the strategy design pattern. In Windows Forms, components are responsible for supplying and drawing their own borders. Some support borders, some don't, and some only supply a few borders. This is because SWF is a thin wrapper around 7 year old windows controls and doesn't seem to have any improvements over WFC in J++. Infact it's lacking some features that were present in WFC like DHTML support.

Java developers are more likely to be University graduates with a strong understanding of OOP.

Unlike Microsoft, Sun understands and embraces OOP. Microsoft prefers speed over good design (at least some of their employees seem to anyway).


Also, python is not oo. Python is a function-oriented language pretending to be oo. Java is the real deal.
What is it about Python that makes you say that it's "pretending"? Are you saying that languages without strict typing or that permit non-object-oriented code are just "pretending"?
Under the first criterion, Smalltalk would not be considered object-oriented, despite being more so than Java itself. (Java has things like "int" that aren't object-oriented, while Smalltalk doesn't.) Under the second, C++ would not be considered object-oriented. (It doesn't require you to wrap all code in a class, unlike Java.)
While I agree that Python is very much driven by functions and not just objects, objects are still an important part of Python, and Python most definitely has object-oriented features.
seana11 wrote:
Fully cross platform APIs including support for Graphics, Windowing and Multimedia. All future APIs will be cross platform. Java has even more APIs than Windows. Look at the current proposals


Completely false. Hilariously false.

Quote:
Mature.


So old and prone to falling over and breaking a hip?

Quote:
LOTS AND LOTS of libraries available. Many are free and/or open source.


Same is true for any reasonably popular language.

Quote:
High density of OO design patterns put to practise compared to C#/.NET. This makes developing complex applications much easier (at the cost of making 'my first text editor' type projects slightly more difficult).


Uh, what? This reads like a crappy resume stuffed full of buzzwords for the sake of buzzwords.

Java's native library is pretty crappy. The APIs there are far from inspired. C#/.NET actually beats the crap out of Java in this area.

Quote:
Well designed APIs following good OO practise.


There are plenty of Java APIs that were terribly designed, as well. And C++ has by far the best example of flawless OO and beautifully designed API in QT4.

Quote:
The Java Community Process allows people with an investment in Java have a say. New Java features can be proposed, discussed and voted for in a open democratic forum. Microsoft does NOT have anything like this which is unfortunate for anyone investing in .NET.


It also makes Java very slow to change and very slow to improve. The Java Community Process sucks hard. If you actually want to have a say go work on Python, or ruby, or any other open source language.

Quote:
Apache.


...is a foundation?

Besides, when you just say "Apache" most people think of the Apache HTTP Server - which isn't written in Java.

Quote:
Currently supported by multiple commercial vendors (not one).


Has no relevance to whether or not you should learn the language or use it for personal projects.

Quote:
Although not recognised by any international standards committee, Java is an open standard governed by Sun and the JCP members (or which there are MANY). C# is an ECMA standard but without support from Microsoft, very few third parties have been willing to implement it. Sun also tends to be less secretive than Microsoft about their products. The C#/CLI ECMA submission is also just a subset of the .NET framework. It has yet to be seen whether any future APIs for .NET will ever be submitted for standardisation (it doesn't look good).


FYI, Sun doesn't exist anymore. Java is run by Oracle, who is currently suing Google for not licensing Java. Hardly an "open standard".

Also apparently you are unaware of the Mono project.

Quote:
Smallest unit of distribution is a class (.class file). This helps in application development, debugging and deployment. Having a one to one mapping between types and the file system is simpler because file systems are well understood.


Giant load of bullshit. The mapping between namespaces and packages is annoying.

Quote:
Good IDEs are available (Netbeans, Eclipse, Together). Many are free and support more features than VS.NET.


Lies. Visual Studio is the gold standard in IDEs. Regardless, Eclipse and Netbeans both support more languages than just Java - so that still isn't a reason to use Java.

Quote:
Swing is well designed and utilises the MVC design pattern extensively. Windows Forms pales in comparison.


Swing is horrendously designed, produces incredibly ugly GUIs, and all around sucks a big one. Seriously, if you are making anything involving a GUI, Java should be immediately discarded. It is *terrible* for GUIs because it has the worst toolkits known to man. Note the plural there. Java has tried and failed to create a decent GUI API multiple times.

If you really want to compare to C#, then you have Win Forms which has an awesome layout tool and far superior IDE support or WPF, which is the latest and greatest in new hotness and has a bunch of really cool stuff.

Quote:
Swing is more powerful than SWF(System.Windows.Forms). For example, border styles can be plugged into any component using the strategy design pattern. In Windows Forms, components are responsible for supplying and drawing their own borders. Some support borders, some don't, and some only supply a few borders. This is because SWF is a thin wrapper around 7 year old windows controls and doesn't seem to have any improvements over WFC in J++. Infact it's lacking some features that were present in WFC like DHTML support.


Then use WPF, which has all that stuff. Also, borders? really?

Quote:
Java developers are more likely to be University graduates with a strong understanding of OOP.


Made up statistic is made up. It's also irrelevant. Heck, most of the worst developers write Java, but I would hardly call that a con of Java.

Quote:
Unlike Microsoft, Sun understands and embraces OOP. Microsoft prefers speed over good design (at least some of their employees seem to anyway).


Fast is better than slow.

Quote:
Also, python is not oo. Python is a function-oriented language pretending to be oo. Java is the real deal.


Not true at all, but even if it was that is far from being a bad thing in and of itself.

Also, since you seem to have a massive hard on for "OOP", give this a read: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html It might just open your eyes.
Kllrnohj wrote:
Lies. Visual Studio is the gold standard in IDEs.

wtf are you smoking? Visual Studio is the most cantankerous piece of crap I've ever had the misfortune to use.

Quote:
Swing is horrendously designed, produces incredibly ugly GUIs, and all around sucks a big one. Seriously, if you are making anything involving a GUI, Java should be immediately discarded. It is *terrible* for GUIs because it has the worst toolkits known to man. Note the plural there. Java has tried and failed to create a decent GUI API multiple times.

SWT is pretty good.

Quote:
Also, python is not oo. Python is a function-oriented language pretending to be oo. Java is the real deal.

Python isn't really tied to a paradigm. But it does OOP well.
elfprince13 wrote:
wtf are you smoking? Visual Studio is the most cantankerous piece of crap I've ever had the misfortune to use.


Let me guess, you're one of those nutjobs that thinks XCode is good, aren't you?

Kidding aside, have you actually used VS? And for what language? For both C++ and C# it is really, really good. VS's C++ debugging is still the best out there, and its code completion is the best. Eclipse is the only one that comes close, but Eclipse's is slower.
seana, did you copy that from somewhere, more specifially, http://www.veridicus.com/tummy/programming/java_vs_csharp.asp here?

Killer, nice arguments, I don't think seana can argue on this one. I have to agree with everything there, especially with your C# Forms/WPF argument, C# forms are excellent. I must say, I tried learning java, but a few pages into the book, I hated it. I found C# to be much more comfortable and useful either with console applications or some Forms applications.

elf, I can sort of understand why you dont like VS, I personally dont use it unless I am just making a console application or debugging, for Forms applications I use notepad++ as that is the way I started learning.
I agree with everything in Kllrnohj's post, and found that blog post extremely funny. I would like to see why you think the first one is completely false (as in, what parts of it).
Python is a function oriented language that has some oo functionality. What really kills it though, is that you have to add a this argument to every language. To me, that completely killed whatever python had going for it.

Quote:

It also makes Java very slow to change and very slow to improve. The Java Community Process sucks hard. If you actually want to have a say go work on Python, or ruby, or any other open source language.



Python isn't any better in this respect. Python is very slow to change, which means you can still run you old, outdated code, but at the expense of new language features.

Quote:

...is a foundation?

Besides, when you just say "Apache" most people think of the Apache HTTP Server - which isn't written in Java.


Apache tomcat. Great container for a great language. JSP is better that PHP, ASP, and Perl in many respects. EDIT: Removed misinformed bit about ASP.

JSP is so much more amazingly powerful than PHP. It supports multi threading, persistence, and is much better with security. It is also much better at interfacing with other services (A SQL database will work just fine with Java). The compiler is a huge benefit, as it catches many mistakes that beginners are prone to make, unlike PHP, where it is easy to forget something that could compromise your web site.

Many of the advantages that java has over PHP apply to Perl. One of the main ones though, is persistance. In java, a servlet is loaded once, and only once. It spawns new threads to handle additional requests. In Perl, a script may be loaded more than once, and it does not have good support for multi-threading. Java is also better in distributed environments, where different parts of the application may be running on different servers.

Java is great for server and enterprise applications . EJB has amazing benefits, and can be coupled with any database system. It can also be coupled with JSPs and Servlets to make amazing commercial sites.

Quote:

Lies. Visual Studio is the gold standard in IDEs. Regardless, Eclipse and Netbeans both support more languages than just Java - so that still isn't a reason to use Java.


I got this from an earlier post, which in turn I got from a website, as qazz pointed out. I'm afraid that the quote did not mention Eclipse, an excellent open source IDE that supports integrating different languages into one project (Like putting JavaScript in your JSPs). Eclipse is much better than Visual Studio, and VS is certainly not the gold standard.

Quote:

Quote:

Unlike Microsoft, Sun understands and embraces OOP. Microsoft prefers speed over good design (at least some of their employees seem to anyway).



Fast is better than slow.


Wrong. Bad OO makes for apps that have low scalability, and are hard to understand and maintain. OO is beter than a bit of speed any day.
seana11 wrote:
ASP is proprietary (Not good at all), and it only runs with Microsoft's proprietary server on MS Windows (Which is inherently bad).

Neither ASP nor ASP.NET (which I presume you really meant) are languages. ASP is a simple server-side scripting engine that supports a variety of languages; if you wrote your ASP site in Perl you could run it on both Apache or IIS. ASP.NET is a web application framework that also supports a wide variety of languages, and can run on a variety of web servers on a variety of operating systems.

The only reason I can see you complaining about .NET not being cross platform is that it's the brand name for Microsoft's implementation of a number of open standards. Mono has successfully put ".NET" on a large number of non-Microsoft platforms.
as jonimus told me, you can easily go ahead and have an asp.net site hosted on linux, no need to use windows..



seana, for future reference, when you make a mistake in your post, dont delete it, just say something along the lines of "oops, my bad, I'm wrong"
Quote:
JSP is so much more amazingly powerful than PHP. It supports multi threading, persistence, and is much better with security. It is also much better at interfacing with other services (A SQL database will work just fine with Java). The compiler is a huge benefit, as it catches many mistakes that beginners are prone to make, unlike PHP, where it is easy to forget something that could compromise your web site.

SQL databases work with PHP too. Wink Also, I would rather make mistakes and learn from them than have a compiler tell me where my mistakes are without giving me a full explanation on why what I wrote was wrong.
seana11 wrote:
Python is a function oriented language that has some oo functionality. What really kills it though, is that you have to add a this argument to every language. To me, that completely killed whatever python had going for it.


Again, no. Python is neither a function oriented language nor an OO oriented language - it is *BOTH*. It is entirely up to the developer to pick what they want, which is infinitely superior to Java's model of forcing OOP, even if you don't want it. OOP is not superior to functional. They both have their place.

Also, I assume you mean a this argument to every *function*. That's just part of the language. I honestly prefer it, as it is actually one less keyword to worry about and it is very powerful and flexible. And really, if you let something minor like that kill a language for you, that's just sad. It's a shame you would skip out on a masterpiece of a language simply because of a minor quirk.

Quote:
Python isn't any better in this respect. Python is very slow to change, which means you can still run you old, outdated code, but at the expense of new language features.


Uh, what? Python is gaining new stuff much faster than Java, it is far from slow to change. And FYI, you actually *can't* run old python code on the newest version (Python 3.x had breaking changes - for better or worse). Regardless, running old code on a new platform is far from a bad thing. Java is the same in this regard anyways, so I'm really not sure what you are trying to get at other than to flaunt your ignorance.

Quote:
Apache tomcat. Great container for a great language. JSP is better that PHP, ASP, and Perl in many respects. EDIT: Removed misinformed bit about ASP.


Apache tomcat is pretty good, yes, but so is Django, Ruby on Rails, etc... There are hosts of great web frameworks for a variety of languages. You say "ASP", but ASP.NET is the latest and it is actually really good as well.

Quote:
JSP is so much more amazingly powerful than PHP. It supports multi threading, persistence, and is much better with security.


Threading is a useless feature in this case, everyone supports persistence, and JSP has no extra security features than anyone else.

Quote:
It is also much better at interfacing with other services (A SQL database will work just fine with Java). The compiler is a huge benefit, as it catches many mistakes that beginners are prone to make, unlike PHP, where it is easy to forget something that could compromise your web site.


The king of SQL support hands down belongs to C#, which actually has language-level support for it (look up LINQ to SQL). Regardless, everyone supports SQL. Compilers don't catch code mistakes nor do they catch security issues, they only check that the code is syntactically valid, which PHP does as well. Everyone does that.

Quote:
Many of the advantages that java has over PHP apply to Perl. One of the main ones though, is persistance. In java, a servlet is loaded once, and only once. It spawns new threads to handle additional requests. In Perl, a script may be loaded more than once, and it does not have good support for multi-threading. Java is also better in distributed environments, where different parts of the application may be running on different servers.


Not true at all, it depends entirely on the server and the method used to run the script (look up FastCGI). Regardless, why are you dragging Perl into this? Pretty sure *nobody* has recommended Perl.

Quote:
Java is great for server and enterprise applications . EJB has amazing benefits, and can be coupled with any database system. It can also be coupled with JSPs and Servlets to make amazing commercial sites.


More meaningless marketing buzzwords. Leave that shit at the door, it doesn't impress anyone here.

Quote:
Eclipse is much better than Visual Studio, and VS is certainly not the gold standard.


Haha, wow. Excuse me, I'm having trouble typing I'm laughing so hard.

Quote:
Wrong. Bad OO makes for apps that have low scalability, and are hard to understand and maintain. OO is beter than a bit of speed any day.


Am I wrong? Really? I was hoping you would fall for that. See, the phrase "fast is better than slow" happens to be one of the driving philosophies of a company you know and use every day. A company that operates at an unimaginable scale. A company that understands scalability better than anyone else. I'm speaking, of course, about Google: http://www.google.com/about/corporate/company/tenthings.html

You have clearly fallen for the OO trap. OO is *not* better than speed. A better design is usually better than extra speed, yes, but OO is *not* necessarily a better design. OO is merely a tool, one tool among many. If you are always reaching for the OO tool, you are a terrible developer. You have blinded yourself to alternatives, alternatives that may, and many times are, superior both in performance *AND* in design. A good design should lead to good performance, the two often go hand in hand.
I can't say more than wow, well put. I agree with all of what Kllrnohj just said (and the earlier post), and it's like the battle of Keywords versus Knowledge. It even reminds me of this:



Well, now that this topic has really gotten derailed, I guess I'll put it back on the train track again and start by asking Mobutu what language he decided to go with. Most of us have suggested Python, but I'm curious as to what Mobutu thinks he should go with after seeing the debates on languages.
When it comes to Java VS .NET, I like to show this:



I don't recommend Java as a starting language, I'd go with Python, like I did, it's the best way to go, because it's not just a starting language, you'll end up using it a lot when you're a more mature programmer.
Quote:
VS is certainly not the gold standard


I disagree, VS is exactly like gold, it is shiny and has some pretty good uses, but costs a lot of money. Express, for some reason, didnt work when I first tried it out (a year ago I think) so I just used a copy of VS and it worked out great (as in, it compiled)

Kllr, I think, wins this one, although I still disagree that VS is *that* great, probably because I use Notepad(++) and csc a majority of the time.
I should have known this would happen with kllrnohj in the thread...
that what? He would refute all your claims?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 2 of 3
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement