tags:

views:

1859

answers:

13

I've been developing Java EE for quite a while now. I've used WebLogic, Tomcat, Spring, and Hibernate extensively, so I have a mental model of what features are available and how things are developed and deployed.

The problem that I have with .NET is that I don't have a clear mapping of its features onto Java EE. Here's what I know so far:

Java EE -> .NET

Java -> C#

JAR -> DLL

WAR -> ? (deployment in general)

EAR -> ? (deployment in general)

Tomcat -> IIS web server

JSP -> ASP?

JDBC -> ODBC

JMS -> MSMQ

JTA -> Microsoft Transaction Manager

So much of the functionality that WebLogic handles appears to be dispersed throughout the Windows OS.

My confusion kicks in when I see the waves of books at Borders - VB.NET, ASP.NET, C#, etc. If I'm not a VB programmer, would it be possible to stick with C# and write enterprise apps that are the equivalent of what I'm used to with Java EE?

If there were a Top Three list of books to learn from, what would they be? The "Head First" series has certainly been successful for Java.

http://www.amazon.com/Head-First-C-Brain-Friendly-Guides/dp/0596514824/ref=sr_1_1?ie=UTF8&s=books&qid=1224121193&sr=8-1

Equally well recommended for .NET learning? Thanks. - %

+2  A: 

I learned C# and a lot about the .net framework and the CLR using the Beginning Visual C# 2005 by Watson, Nagel, Pedersen, Reid, Skinner, and White and moved from there onto Professional C# 2005 by Nagel, Evjen, Glynn, Skinner, Watson, and Jones. These books covered the spectrum of what I needed to know in a fairly exhaustive amount of pages. :) But they got the job done and I've had little need for any other books since I finished them.

And to answer futher, yes, I believe you can write enterprise level applications in C#, just like in Java. A bit different, but yes you can.

Jeremy Reagan
+2  A: 

ASP.Net is using one of the .Net languages (VB.Net, C#) to write ASP applications, aka, applications for the web. So, ASP.Net would be similar (From my understanding), to J2EE, which is a framework for writing web applications. Whereas C#, VB.Net is the application later.

A couple other things I want to point out. The equivalent to JDBC for the .Net world is ADO.Net, and while the ODBC exists, ADO.Net is the way you access your database, in most circumstances.

Also, as you may have noticed, there is no equivalent of WAR files. When you want to deploy your .Net web application, you just drop the compiled DLLs in the bin directory of your web server.

If you want to know of a good place to learn, Stackoverflow is a good place to start. Try to program a simple project, and ask questions here when you get stuck. Get a book to guide you through the basics, although you'll probably want to skip over a lot, as you already have a good base of web programming. I really just recommend to learn by doing. I'm a .Net developer, and I've never read a book on .Net web development.

Kibbee
+4  A: 

To start with, don't try to do one-to-one mappings from what you know from the JAva world to .net.

That will just result in trying to fit a square into a triangular hole. A good example is the JDBC->ODBC mapping you have mentioned; ODBC is an outdated database driver model and I doubt anyone is using ODBC in .net development today as there are many alternative database access methods and technologies built into .net.

I would recommend that you start by installing Visual Studio and the msdn library, and then look at the various examples available on msdn, codeplex etc and pick up .net from there.

As for your question on VB etc, don't waste time on VB - stick to C#. Especially since you already know java.

KristoferA - Huagati.com
+1  A: 

I moved to ASP.NET last year, and being a Ansi C programmer things were hard at the beginning, I did bought some books but I never read them till the end, the I found out the asp.net website and what I did was looking into the amazing tutorials that ASP.NET website has.

they have video and plain old text tutorials, ad I must said, I did learned a lot with this, it open my vision to fantastic things that today I can do and is appreciated by the company that I work for.

P.S. I still buy books, but now more focus on Design Patterns :) ...

balexandre
+2  A: 

I can recommend you a book, C# for Java Developers, it can help you to get started, this book explains very well the similarities and differences of Java 1.4 and .NET, C# languages, API's, etc, you will get a lot from this book. Then you can pick some C# 3.0 specific book to get into the new language features that C# provides now.

CMS
+1  A: 

I found the videos over at Asp.net to be useful when I was learning ASP.NET and getting introduced to the various concepts.

Bullines
+1  A: 

You most definitely can write enterprise applications with C# and no experience in VB. I think you have several objectives that will be important for you to focus on:

  • Application Archictecture with .Net - It will be key to understand how the logical application tiers are implemented in a Windows environment with IIS, authentication, security, marshalling objects, COM+etc. This will have very little to do with C# itself.

  • Transition to C# - assuming you are conversant with Java, I would recommend studying C# through design patterns, as the interesting differences will be apparent to you and you will not have to struggle with many new concepts given the similarity between Java and C#.

  • Asp.Net Development with C# - Unless you can jump in with MVC, you need to learn about Webform development and how Microsoft has provided tools for create controls or mechanisms for web presentation. MS has some processes in place for managing session state that will need to be mastered, and that some rightly criticize as being complicated.

One of the best places to go to learn about C# and web development in .Net is DotNetRocks and the companion site DNRTV. These sites cover all facets over .Net development in the form of podcasts and screencasts, ranging from architecture to programming. There you will be exposed to the different approaches to .Net web development.

David Robbins
+12  A: 

Jeff Richters CLR via C# is probably one of the best texts for experienced developers coming from other development environments:

http://www.microsoft.com/MSPress/books/6522.aspx

His previous book, Applied .NET Framework Programming was the one that made all the lights come on for me way back when:

http://www.microsoft.com/MSPress/books/5353.aspx

You also can't go wrong picking up Essential .NET by Don Box/Chris Sells, it's aimed at CLR v1 but many of the concepts still apply:

http://www.pearsonhighered.com/educator/academic/product/0,,0201734117,00%2Ben-USS_01DBC.html

Get the basics right and you'll have no trouble picking up the rest from the MSDN Library reference material which is a pretty good resource.

Kev
+1 great selection of books.
Chuck Conway
+1 right on the nail
Wayne
+1  A: 

If you are familiar with Hibernate, Spring, they exist in the same way in .net, using NHibernate and Spring.net, as well as lots of other alternatives, some are Microsoft's and some are not. For example

For database applications, starting from DB up to Application level You can have the DB of your choice, either SQL Server, Oracle, Access, DB2, Postgres ... etc Then the Data Access Layer, is based on ADO.net that basically can access your database using any suitable driver/provider like OLEDB, ODBC (is quite old), Oracle Data Provider (ODP) ... which gives native access to your database specific functionality such as stored procedures, which is not available if you are communicating over ODBC. Then, you can either use a code generator like Linq to SQL (which comes for free with VS 2008+) or other third party code generators like LLBLGen Pro, and others, or you can make O/R Mapping using NHibernate or using more sophisticated technology such as Entity Framework which was just release with .net 3.5 SP1 Then on top of that you can develop your domain objects using C# or the language you like that consumes the infrastructure. then on top of that, you can expose your domain functionality using a UI directly in this case ASP.net, or expose them in the form of services either SOAP or REST using WCF or ADO.net Data Services (Which was also released with .net 3.5 SP1, and were built on top of WCF), then in case you exposed the functionality in form of services, you might need to communicate with other services in a workflow where you can use Windows Workflow (WF), then you will need to build a client that consume these services, you can use develop as many clients as your situation demands, for example you can build AJAX client using (MS AJAX framework + jQuery + ASP.net) or you can build a RIA (Rich Internet Application) using SilverLight, or leverage the client desktop capabilities and build a very rich user interface using WPF/Windows Forms client. So basically as you can imagine from the long story above, how .net can be the tool of choice to build the end to end solutions from the most bottom database level, up to the server, down the wire to the client browser and client machine.

bashmohandes
<"Wall of Text" crits for 1200>
Greg D
+2  A: 

I'm also transitioning from Java. My frustration has been that the beginner-level books -- the kind that walk you through step-by-step -- tend to show you how accomplish things via drag and drop in Visual Studio. As an experienced programmer, you will recognize that this approach won't be very useful in a complex project.

The "advanced" books tend to assume that you know too much. You will understand them conceptually, but it is hard to translate down to code, and there is not enough detail in the samples.

It turns out you've got to understand ADO.NET before something like "advanced ASP.NET" will be accessible.

My suggestion is to read a couple of the beginner books just to get a feel for Visual Studio, and then jump into ADO.NET by Sceppa published by Microsoft Press. After I got through chapter 5 other books and examples started to make more sense.

Vic Boudolf
The windows forms designer is amazingly flexible and complete, even for complex projects. The defaults aren't always what you want, of course (default event handler names are awful). I assume that's what you're referring to, because I wouldn't yet recommend the WPF designer to my worst enemy.
Greg D
+1  A: 

Hi

just to add a little to you list

JSP -> ASP.Net

JDBC -> ADO.Net

Hibernate -> NHiberate

Spring -> Spring.Net (however, I personally prefer Castle Project)

Junit -> MBUnit or Nunit

Mocking -> Rhino Mocks, Moq

MVC -> Micorsoft MVC.NET

Look at DimeCasts.Net for some FREE 10 min long videos

as you said Enterprise level applications, you will note that .Net has many frameworks Java has with the N in front, IE Junit -> Nunit

have a look at the Castle library for a great open source Enterprise library. Or use MS P&P ent lib.

Finally look into WCF, its how .Net will host Enterprise services, (Dimecats have a great viedo series on this)

dbones
Thanks dbones, greatly appreciated.
duffymo
add/modification to list: JSP = ASP. JSF = ASP.NET. JSF is Sun's answer to ASP.NET
Michael Buen
A: 

Another factor for learning .NET from those that come from the JAVA world is this:

With JAVA you have a platform that runs on multiple different operating systems and hardware, but has mostly just one language, java. So the VM focus in JAVA is cross-platform. (Yes, we do have things like JPython etc but they map down to java, not down to the implementation of the VM)

With .NET you have a platform that runs on Windows and somewhat on other operating systems using Mono and other 3rd party implementations. .NET focuses however on allowing you to choose your language for each instance of a file you are using to develop your solution. This is accomplished using the CLR / CLI / CTS of .NET. Thus, the VM focus in .NET is cross-language.

So the standard .NET runtime exposes the same functionality to whatever host language you are using and once you know the language, using examples written in VB.NET to write C# code is quite easy and of course, you can extend a .NET class in language X that was originally written in language Y.

jhaukur
A: 

i have no knowledge of java how can i learn .net

sudhir jaiswal
sorry i wanted to ask question
sudhir jaiswal
Start reading about .NET. Java knowledge is not a prerequisite for learning .NET.
duffymo