Help - Search - Member List - Calendar
Full Version: Java and VB.Net
Lowyat.NET > Special Interest > Codemasters
knowmore
Nowadays, Java and VB.Net are very popular programming language in the market.

May I know :-

1. Which programming language is more powerful and useful?
2. It market value or marketplace today and furure?
3. For you which programming language you will learn?

Thks your idea. thumbup.gif
Gemini
Java is more on server side programming while .NET (vb or c#) are mostly developed for windows based client. This is actually a big research which has been discussed/debated over varies of websites/forums... google it and u'll find them...

either way.. if u r new to programming world and wanted to pick either java or .net u'll need to pick up OOP 1st biggrin.gif
alwajdi
Java is more used by corporate and big companies especially in the finance and stock trading industries.
sennheiser
QUOTE(alwajdi @ Mar 26 2008, 05:42 PM)
Java is more used by corporate and big companies especially in the finance and stock trading industries.
*



this is only half the truth. java is widely used because of portability. it can be compiled once and run on many platforms as long as a JVM exists for that platform. so called big companies and finance companies use java because they have heterogenous platforms (ie bsd + linux + win + HPUX etc etc). VB.net runs primary on Windows environment but novell has already debut its experimental .net CLI for UNIX (Mono).

the definition of "powerful" is extremely abstract. VB.Net is built to run in a Common Language Runtime (CLI) environment known as Microsoft .Net Framework. The framework has tonnes of classes and methods that would simplify a programmers life and make Win32API/MFC programmers retreat in admiration. Java, like .Net, has also an application framework that provides classes and methods to ease life. Both .net and java compiles to an intermediate language (byte codes) and are just in time (JIT) compiled to native code when executed.

In terms of performance, both are actually on par.

About "useful", both languages are useless if you define useful as being able to do everything. Since you cannot make low level system calls through JVM and CLI, you never see system drivers written in java or .net, nor could you see fully functional operating systems being written from java or .net from scratch. Few experimental managed OSes are exceptions though, like Singularity which uses a C# kernel but the truth is, it still depends on ASM/C/C++ to perform low level system tasks.

The real difference is the programming paradigm. VB.Net is for VERY RAPID application development (RAD) while Java is for VERY PORTABLE application dev. VB.net syntax is very english like (with little cryptic symbols) and its grammar is relaxed and less strongly typed. Java on the other hand is strongly typed and the sheer amount of symbols could scare novice users.

For me, I have picked up C, C++, C#, VB(.net), Java, PHP and if you dont mind low level languages, I have also studied x86 Assembly language (ASM). My primary language is C# because I do rapid turnovers (a complete app in less than a month), my primary target audience is Windows Server system and I'm used to C++ styled syntax.

About market, the current market is saturated with java and vb programmers. why not pick up LISP, PROLOG or what and create Skynet. LOL biggrin.gif
mikazzz
Lol...good description there..totally agree with you...and wow, LISP / Prolog..learnt that for one month..and dun really wan to touch that anymore..
knowmore
all guy,

thks a lot urs description n idea.

especially sennheiser tongue.gif
ubsacc2004
so which 1 u choose ?
ahmadfarhan
even if you decide not to choose java, please learn c# instead of vb.net..

vb.net as a first language is bad, because it teaches you things like not initializing, or even declaring, variables, loose typing, and other stuff that you'll have to unlearn later..

arroyos
er...yea..prefer C# rather than vb.net
sennheiser
QUOTE(ahmadfarhan @ Apr 4 2008, 03:46 PM)
even if you decide not to choose java, please learn c# instead of vb.net..

vb.net as a first language is bad, because it teaches you things like not initializing, or even declaring, variables, loose typing, and other stuff that you'll have to unlearn later..
*



That is so not true.

VB.NET comes with Option Explicit on by default, so if you don't declare a variable, it will throw an error. PHP is the only language I know where you can simply throw in a variable and forget about it.

Let's consider types:

PHP:
String: $foo = "bar"
Int: $widget = 123

$widget = $foo is valid

Java/C#:
String: string foo = "bar"
Int: int widget = 123

widget = foo will throw implicit type conversion error

VB.Net:
String: Dim foo as String = "bar"
Int: Dim widget as Integer = 123
Hybrid: Dim sprocket as Object = Class.Member.Structure

widget = foo will throw implicit type conversion error
sprocket = foo = widget is valid

If I were you, I would "unlearn" PHP because it encourages me to throw types away. But before I get flame wars waged against me, let me clarify my stance: Every language has its own beauty. PHP and VB.Net being bloody fast and easy to master but hell when it comes to debugging, and C and its influenced language being bloody hard to master but bloody safe.
alwajdi
well, i found that it's not really hard to master c# or java or any other language.
the only thing that is hard to grasp at first is the concept of programming (OOP, AOP or whatsoever).
once you've mastered the concept, all that is left is the matter of syntax and library.

job market saturated with java programmers?I found it the other way round.nearly all job ads with java as the requirement that I applied before would just offer me the job after the 1st interview and this was less than a year ago.
natakaasd
As a VB6 Programmer that is migrating to VB.NET, I'll say a little icky thing about Conversion Errors.

It is not the Languange's fault if you don't declare your variable etc.

Although there is the convenience of not declaring it (variables) in VB6, I still add it (Option Explicit) in my code ALL THE TIME and Declare my variables ALL THE TIME. It has nothing to do with the language, but the attitude of the programmer.

Terrible Programming Habits = Terrible Debugging Process. Why make it hard for yourself? Inculcate good programming habits. biggrin.gif

~Cheers!

EDIT: Make stance clearer.
ahmadfarhan
QUOTE(sennheiser @ Apr 4 2008, 06:33 PM)
That is so not true.

VB.NET comes with Option Explicit on by default, so if you don't declare a variable, it will throw an error. PHP is the only language I know where you can simply throw in a variable and forget about it.

[snip]

If I were you, I would "unlearn" PHP because it encourages me to throw types away. But before I get flame wars waged against me, let me clarify my stance: Every language has its own beauty. PHP and VB.Net being bloody fast and easy to master but hell when it comes to debugging, and C and its influenced language being bloody hard to master but bloody safe.
*



[Not trying to satrt flame here.. Just trying to get my point accross]

PHP is a web based scripting language. And VB is a full blown programming language. The diffence is not only semantic, scripting language is compiled differently that's why PHP is loosely typed. But That's not my point

My point is that there are other things that is ugly with VB(VB.NET is slightly better, but only slightly), For example convention for calling a method/function . Just about every programming language separate method calls (with barackets "()") as opposed to member variable calls ( no brackets ). With VB you call them both the same way.

And what's the deal with methods not returning value are called Sub procedure and methods returning values are call function.
VB doesn't differentiate between the assignment operator and the equal to comparison operator.
VB also do not differentiate between bitwise and logical operator.

These are all very bad things to learn as a beginner. I'm not thrashing VB, it is good for RAD and interface prototyping(and probably a lot of other stuff). But as a first language it is BAD. A seasoned programmer could understand that these are not best practices and accept the lower complexity for the fast development time and powerful gui toolbox, but a beginner might mistake these as common practice. (IMHO)

Of course to each his own. No hard feelings
sennheiser
QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
For example convention for calling a method/function . Just about every programming language separate method calls (with barackets "()") as opposed to member variable calls ( no brackets ). With VB you call them both the same way.
*



The standard method calling convention in VB.net DOES have parentheses behind!

Only classic VB and VBS fail miserably if you add parentheses when calling methods:
http://blogs.msdn.com/ericlippert/archive/...9/15/52996.aspx

Anyways lets not veer off topic. We're talking about VB.Net not the classic VB.

QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
And what's the deal with methods not returning value are called Sub procedure and methods returning values are call function.
*



Because the original BASIC developed by John George Kemeny and Thomas Eugene Kurtz in 1963, not Bill Gates, said so.

QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
VB doesn't differentiate between the assignment operator and the equal to comparison operator.
*



Agree. But don't forgot what the B in BASIC stands for. == and = means noughts to newebs..

QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
VB also do not differentiate between bitwise and logical operator.
*



Agree. Again, don't expect a beginner to understand what && or || are.

QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
These are all very bad things to learn as a beginner.
*



Disagree. You cannot teach one to run without first teaching him to crawl. VB.Net is way more english like than other languages so its a natural first for many beginners.

QUOTE(ahmadfarhan @ Apr 5 2008, 01:27 AM)
I'm not thrashing VB, it is good for RAD and interface prototyping(and probably a lot of other stuff). But as a first language it is BAD. A seasoned programmer could understand that these are not best practices and accept the lower complexity for the fast development time and powerful gui toolbox, but a beginner might mistake these as common practice. (IMHO)
*



Agree. But a beginner will eventually become a seasoned developer. So why the fuss??

Anyways I think I'm bored of this age old debate so I'm signing off from this thread. If you love VB.net bashing, just google for it. I bet if it wasn't because VB.Net was invented by Microsoft, it wouldn't receive such disrespectful treatment today.

P/S: My first language is C# and I speak fluent C++ but I still keep VB.Net for fast and simple tasks, it's dispensible.
Ee_
Java can also be used as desktop application, with editor such as Netbeans and Eclipse, you won't even really need to go into the OO concept, but of course if you want to build something more complicated than usual, you need to know about it. I've seen people created information system using Netbeans without really knowing the concept.

My main concern about Java desktop application is that it can't be encrypted properly. The byte codes can be decompile and you can see everything in there even if you scramble your code. So, if you got database connection info in the jar, anyone who has a little knowledge about decompiling can find your connection info which impose a great security risk. But, the portability between different OS is definitely amazing.
yclian
QUOTE(Ee_ @ Apr 5 2008, 12:34 PM)
My main concern about Java desktop application is that it can't be encrypted properly. The byte codes can be decompile and you can see everything in there even if you scramble your code. So, if you got database connection info in the jar, anyone who has a little knowledge about decompiling can find your connection info which impose a great security risk. But, the portability between different OS is definitely amazing.
*


It's definitely a bad idea to include such details at the code level. I will never agree with. Keep it elsewhere, e.g. keep it at the fs then either encrypt it or lock it with restricted permissions.

One thing to point out, which is related with the topic, whenever you find that a programming language or framework doesn't fit your requirement, it could just be (or could not) the way you design it is wrong. Rethink, before you switch to another.
alwajdi
QUOTE(Ee_ @ Apr 5 2008, 11:34 AM)
Java can also be used as desktop application, with editor such as Netbeans and Eclipse, you won't even really need to go into the OO concept, but of course if you want to build something more complicated than usual, you need to know about it. I've seen people created information system using Netbeans without really knowing the concept.

My main concern about Java desktop application is that it can't be encrypted properly. The byte codes can be decompile and you can see everything in there even if you scramble your code. So, if you got database connection info in the jar, anyone who has a little knowledge about decompiling can find your connection info which impose a great security risk. But, the portability between different OS is definitely amazing.
*



Sure you can build a Java system without really knowing the concept of OOP, but seriously, it will be hard to maintain at later stages when modification or extra features are needed. you'll end up rewriting the whole system all over again. In other word, not scalable. Do some reading on software design patterns and anti patterns and you'll know what I mean.

about your second concern, there is this thing called Obfuscator. Google about it! smile.gif
sennheiser
same goes to MSIL (.net bytecode). it can be decompiled using msil dasm or .net reflector. n about obfuscators, i think they are plain useless. they just make things hard for humans to read, but not impossible for machines to interpret.

I run my app's msil through rijndael-256 encryption and wrapped it with a decryption class coded in C++ (compiled to native code). The assembly is invoke using interop.
Ee_
QUOTE(alwajdi @ Apr 5 2008, 04:15 PM)
Sure you can build a Java system without really knowing the concept of OOP, but seriously, it will be hard to maintain at later stages when modification or extra features are needed. you'll end up rewriting the whole system all over again. In other word, not scalable. Do some reading on software design patterns and anti patterns and you'll know what I mean.

about your second concern, there is this thing called Obfuscator. Google about it!  smile.gif
*



Obfuscator can only delay the time taken to search for what you want. Encrytion must be decrypted before it can be ran, so, it's not very safe. There's no definite solution for this.

Edit: About the OO thing, actually, when you write information system that requires you to know how to DELETE, ADD, EDIT data, you don't really need to know the OO concept simply because Netbeans has taken care of it for you.

So, that's it, just wanna give thread starter a general view about Java in creating desktop application.
sennheiser
In memory decryption can at least prevent casual users from peeking into your codes. Even native codes can still be reverse engineered by professionals. No code is safe smile.gif
natakaasd
QUOTE(sennheiser @ Apr 5 2008, 07:33 PM)
same goes to MSIL (.net bytecode). it can be decompiled using msil dasm or .net reflector. n about obfuscators, i think they are plain useless. they just make things hard for humans to read, but not impossible for machines to interpret.

I run my app's msil through rijndael-256 encryption and wrapped it with a decryption class coded in C++ (compiled to native code). The assembly is invoke using interop.
*


Nice idea. Might be thinking of implementing future codes this way. Way to go sennheiser!

QUOTE(sennheiser @ Apr 6 2008, 05:54 AM)
In memory decryption can at least prevent casual users from peeking into your codes. Even native codes can still be reverse engineered by professionals. No code is safe smile.gif
*


Agree. Most people just hide/obfuscate/encrypt their codes just to make life "harder" for those who intend to peak into the code "illegally". No code is safe, unless you don't let others use your program. biggrin.gif (It is just the same as computers. Don't want it to be infected? Don't plug it into a Network cable, Lock it in a safe where only you know the key. tongue.gif ~Quoted from someone.)

~Cheers!
knowmore
How abt start fr C++?

C++ is a OO language and very strong in OO.

If we can understand it, then we can learn another language is more easy.

r ur agree?
winmxbb
i choice java, coz platform dependencies .
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
All Rights Reserved 2003-2006 Vijandren Ramadass
Invision Power Board © 2001-2009 Invision Power Services, Inc.