.NET (C#) for Experienced Java Developers

A fast paced conversion course for Java developers migrating to the .NET stack.

Overview

This is a fast paced course for software teams who require an accelerated guide to the .NET Framework and its major API’s. The course takes experienced Java developers and rapidly transitions them from their current environment into .NET development.

Each topic in the course is introduced in terms of the corresponding Java/JEE technology, enabling delegates to leverage their existing skills and make the transition rapidly.

The full course runs over four days and covers all major aspects of .NET application development. Alternatively clients can tailor the course down to 2-3 days based on their specific requirements.

Outline

Fundamental Concepts of .NET

  • Compiling to Intermediate Language (IL)
  • The Common Language Runtime (CLR)
  • Comparing the CLR and the Java VM
  • The Common Type System (CTS)
  • Assemblies and Application Domains
  • Running the C# compiler manually
  • Examining assemblies using ILDASM
  • Locating and loading assemblies
  • Deploying assemblies to the GAC

Creating and Compiling Applications

  • Installing and running Visual Studio (VS)
  • Creating new solutions and projects in VS
  • Building console and GUI based applications
  • Building and referencing class libraries
  • Building ASP based Web Applications and Web Services

Procedural Coding and Built In Objects

  • Basic types and their CTS mappings
  • Implicit types using var
  • Understanding the object class
  • Using Strings and StringBuilders
  • String interpolation
  • Converting between basic types
  • Boxing and unboxing basic types
  • Constructs for iteration and selection
  • Working with the three types of array
  • Documenting C# code using XML

Object Oriented Development Part One

  • Class declarations in C#
  • Understanding partial classes
  • Organizing classes into namespaces
  • Access modifiers and their meaning
  • Static, readonly, constant and volatile modifiers
  • Adding constructors to classes
  • Using other constructors via this and base
  • Object initialization in detail
  • Using properties instead of Java accessor (getter and setter) methods
  • Creating auto-properties and using initialisers
  • Expression bodied properties and methods
  • Allowing clients to use array notation by implementing an indexer method
  • Destructor methods and finalization
  • Comparing GC in Java and .NET
  • Declaring methods and parameters
  • Passing parameters by reference and for output
  • Using variable number parameters

Object Oriented Development Part Two

  • Declaring derived classes
  • Polymorphism with virtual and override
  • Opting out of polymorphism using new
  • Safe downcasting using is and as
  • Abstract base classes and Interfaces
  • The null conditional operator
  • Primary constructors
  • Releasing resources via IDisposable
  • Differentiating between Java Inner Classes and C# Nested Classes
  • Throwing and catching exceptions
  • Comparing the exception management philosophies of Java and C#

Event Handling, Delegates and Lambdas

  • Using delegates to hold function addresses
  • Working with anonymous delegates and lambdas
  • Functional programming techniques using lambdas
  • Adding events to your own classes

Generic Programming in C#

  • Introduction to Generic Programming
  • How generics works within the CLR
  • Using the generic collection classes
  • Declaring your own generic types
  • Generic type parameter inference
  • Applying constraints to type parameters
  • Examining generic types via reflection

Advanced Language Features

  • How to overload operators
  • Using structs to create local objects
  • Pointers and unsafe code

Database Access in .NET

  • Overview of the ADO .NET architecture
  • Creating and using database connections
  • Executing command objects and using readers
  • Populating and using DataSet objects
  • Entity Framework

Language Integrated Query (LINQ)

  • The basic syntax of a LINQ query
  • Data sources that support LINQ queries
  • The IEnumable and IQueryable interfaces
  • Running queries against collections of objects
  • Running queries against XML node trees
  • Running queries against a SQL Server database
  • Combining LINQ with the Entity Framework

Concurrent Development in .NET

  • The standard .NET threading API’s
  • Running LINQ queries concurrently via PLINQ
  • The Task Parallel Library
  • The async/await Pattern

.NET on the Web

  • The evolution of Web Application Architecture
  • The rise and fall of server side web controls
  • Why the ASP .NET platform moved towards MVC
  • How HTML5 came to replace Silverlight and Flash
  • Opportunities and challenges posed by JavaScript
  • The need to apply JavaScript in a ‘first class’ way
  • How client-side controls replaced server-side ones
  • Why SPA architecture is now the dominant design

ASP .NET MVC Fundamentals (Optional)

  • How incoming requests are routed to controllers
  • Declaring controllers and business methods
  • Capturing information from request parameters
  • Building and returning ActionResult objects
  • How an ActionResult is mapped to a view
  • Options for passing model info into server pages
  • Writing view pages using the Razor syntax
  • Modularising views using master pages and helpers

Getting the Best out of ASP .NET MVC

  • Organising your code, scripts and markup correctly
  • Planning for a layering approach to testing and TDD/BDD
  • Refactoring your codebase using ReSharper and MSTest
  • Injecting dependencies using your own object factories
  • Using DI frameworks such as Castle Windsor and Ninject
  • Using mocking tools like Moq to replace dependencies
  • Managing routing information in MVC using attributes
  • Creating RESTful services using the MVC Web API

Requirements

Delegates must be proficient Java developers with a minimum of 3 years commercial programming experience.

Sign up and stay in the loop

Be the first to know about upcoming workshops, courses, talks and events

Learn more

Engaging presentation of the course made the huge content covered easier to follow and consume. Supporting notes etc. Very useful, as were the examples used during the course.