|
|
|
|
| |
|
|
|
|
Use the Visual Studio .NET IDE and Grasshopper to Deploy .NET Apps on Linux!
|
 |
|
We all know and love the Microsoft® Visual Studio .NET® IDE,
but did you know that you can use it to build server applications that run on
Linux®? Discover how, with Visual MainWin® for J2EE™ from
Mainsoft, Visual Studio users can run their applications natively on J2EE and
Linux environments.
|
 |
|
|
 |
|
Figure 1:Your ASP.NET application running on Linux.
|
Take a look at Figure 1. It’s clearly an ASP.NET application, and it’s clearly
running on Linux. That’s easy, you might think, you can build an ASP.NET
application, run it on Microsoft Windows® under Internet Information
Services (IIS) and browse to it using a browser such as Firefox on a Linux
client. You’d be right, but look again. In the screen shot, your ASPX is
running on localhost, the Linux box itself. With Visual MainWin for
J2EE, also known as Grasshopper, you can do this easily, without changing your
existing .NET code.
Therefore, you can say that Visual Studio .NET + Grasshopper = Visual Studio
.NET for Linux!
|
Extending your skill sets to Linux
|
|
|
Consider this – many companies have Linux on their radar for some form of
inclusion in their strategy, be it on the desktop or in the data center. To
build applications for Linux, you would probably have to learn a new skill set
such as GTK or Java™. For server side or hosted applications, the logical
candidate is usually J2EE, due to its cross-platform nature and its well-known
security, manageability, performance and scalability characteristics. However,
to develop J2EE applications, you need to learn the Java language, Java
Servlets, Java Server Pages, JDBC for database connection and even Enterprise
Java Beans for distributed applications.
What if, as an alternative, you could broaden the reach of your skills to Linux
and other Java-enabled platforms, and as a result, extend yourself (and your
resume) in a new and exciting area? What if you could do this without rewriting
most of your code, and instead re-use your existing C# code? Not only that, but
would you like to contribute to the Mono™ project – the creation of
an open source .NET Framework for Linux? Well you can, and you can do it today,
with Grasshopper, a freely available download
from Mainsoft.
|
|
What you can do with Visual MainWin for J2EE: A brief overview
|
|
Starting or
converting projects from .NET to J2EE
|
|
|
Mainsoft offers a an innovative way to build Java applications by developing
code with Visual Studio code and dynamically translating Microsoft IL into Java
bytecode. As you know, when you compile a Microsoft Visual Studio .NET
application, it generates Microsoft Intermediate Language (MS IL), which
executes on the Microsoft Common Language Runtime (CLR). Grasshopper is a
Visual Studio .NET plug-in, which takes this MS IL and converts it into Java
bytecode, which executes on a Java Virtual Machine. Grasshopper also includes
J2EE implementations of ASP.NET, ADO.NET and the most common .NET namespaces,
so the required dependencies are available on your J2EE platform.
You’ll get your first indication that something new is available in Visual
Studio .NET when you launch it after installing Grasshopper. This demonstrates
how tightly the Visual MainWin tools are integrated within the Visual Studio
.NET development environment.
|
 |
|
Figure 2. Starting a new project in the Microsoft Visual Studio .NET
environment with Grasshopper installed.
|
After installing Grasshopper, launch Visual Studio, and then choose File > New
to open the New Project dialog.
Notice there are two new Project Type folders here – Visual MainWin C# for J2EE
Projects and Visual MainWin for VB for J2EE Projects.
In fact, there are two ways you can develop your J2EE applications for Linux
using Grasshopper – either by creating a project directly from here and
building it in C# or VB.NET, or by taking your existing .NET Framework based
project and generating a J2EE project from the .NET project using the Generate
J2EE Project Wizard. You will see a little more on this later.
When you install Grasshopper, you also get a copy of Tomcat, saving you the time
and trouble of installing and configuring an application server yourself. You
can start or stop Tomcat via the Visual MainWin for J2EE group on the
Start menu. Tomcat must be running for you to create any new projects, or to
convert your existing .NET Framework based projects to J2EE/Linux based
projects. By default, Tomcat runs on port 8080, which is why the New Project
dialog (Figure 2) shows the default root for your Web application or Web
service as localhost:8080. If you are not familiar with
Tomcat, it is a cut-down J2EE application server that is used for the
official reference implementation of the Java Servlet and Java Server Pages
technologies.
If you have an existing .NET project, and you want to convert it from .NET to
J2EE, it's easy too. Simply right-click your project in the Solution Explorer
and select Generate J2EE Project. Grasshopper creates a new project for
you, sets it up for Java, and associates your source files with this project.
You can then edit, compile, deploy and debug this code on your J2EE server. You
can also choose to have the original project and the converted project in the
same solution and then implement a single source strategy, building your source
code for both .NET and J2EE from one single Visual Studio .NET instance.
Tomcat is also available for Linux, so the applications you build on Tomcat
using Grasshopper will run perfectly happily on Linux too. Tomcat is the only
application server that is supported by Grasshopper, so if you want to use
WebLogic®, WebSphere® or JBoss®, you can with
the Enterprise Edition of Visual MainWin for J2EE. A free 30-day evaluation of
Visual MainWin for J2EE, Enterprise Edition, is available for download from
here.
To create a deployment Java Web Archive file (WAR), all you have to do is
right-click on your project in the Solution Explorer, select Deployment Packager,
choose the directory that you want to deploy to, and click OK. Visual
MainWin then compiles your code and dependencies into a WAR file. To install
the WAR file on your Linux-based Tomcat server, simply browse to the Tomcat
Manager Console at http://linuxboxaddress/manager/html and install it
from there. Tomcat uploads and deploys the WAR file for you.
|
|
Cross-platform debugging
|
|
|
|
 |
|
Figure 3. Debugging an application running on the Java platform.
|
One of the challenges you would expect to meet when developing an application
of the .NET Framework using Visual Studio .NET tools and deploying to a Java
runtime, is debugging. Surely debugging cannot work when you cross compile?
Well it does! In fact, it works transparently, so that you still believe you
are debugging your application as if it were running on the .NET Framework!
Take a look at Figure 3 for an example of this. You can try this yourself:
Create a new Web application (using the Visual MainWin C# for J2EE projects
folder), add a button to it, and enter some form behind the button event
handler as shown. Don’t forget to put a breakpoint in the code. Once done,
click Debug > Start or press F5. Your application will be
compiled and deployed to Tomcat, and a browser will launch directing you to the
ASPX page.
Click the button on the page, and you will be taken back to the Microsoft Visual
Studio .NET IDE, which has stopped at the breakpoint, as shown in Figure 3. As
you can see, all the Microsoft Visual Studio tools you are used to for
debugging – Watches, the call stack and so on – are still available. You can
still step through the code and watch it execute, and if you look at the call
stack, you can see which classes are running and where. It is particularly
interesting to see how Grasshopper links the .NET Framework and the Java
specifications, though it doesn’t affect the execution of your program! In
addition, you can track bugs wherever they arise, even in production servers,
by connecting from Microsoft Visual Studio .NET to the server, regardless of
its operating system, and debug any problems from your preferred development
environment!
|
|
Interfacing with existing Java or J2EE assets
|
|
|
Many companies – and yours probably isn’t an exception – have assets already
implemented in Java, and you will need to interface with these existing Java
assets. You may also need to use a third party add-on within your applications
to implement some functionality. A good example of this is reporting, where
most companies would use an add-on such as Crystal Reports to do the charting.
In the Linux world, these would be implemented in Java, and available as Java
Archive (JAR) files for you to include in your application. Native Java
developers can use these easily by including them when they compile their code,
but what about when you are building from C#?
Using Grasshopper, you are not left out. You can add references to the JAR
files, and manipulate them in your code as you see fit. It’s analogous to
adding references to third party assemblies. To do this, you simply right-click
the References folder in your Solution Explorer, and you’ll see two new options
above the existing Add Reference and Add Web Reference options:
-
Add Java Reference, which allows you to find a JAR file and create a
reference to it that you can write code to. Java References are fully
integrated with your development environment, so the Object Browser, the
Intellisense on the code editor and the compilers all recognize the Java
classes and their members in exactly the same way they recognize regular .NET
ones. This allows you to code against them with the same level of productivity
that you have when using the .NET Framework class libraries.
-
Add EJB Reference (available in the Enterprise Edition only), which
allows you to find an Enterprise Java Bean (EJB) using JNDI lookups. JNDI is a
directory service used to locate your EJBs and interface to them. This is not
supported on Tomcat, because Tomcat does not support EJBs. If you are using
Visual MainWin for J2EE Enterprise Edition to build applications for
EJB-enabled servers such as JBoss, WebLogic or WebSphere, you can find your
EJBs using their JNDI entry, create references to them and consume them like
any other object. If you need to consume EJBs, your J2EE developer who built
them can give you this information.
|
|
Online help and samples
|
|
|
|
 |
|
Figure 4: Grasshopper integrated help.
|
Mainsoft found that the vast majority of Web application and Web service code
transfers cleanly to Java without recoding. The places where you might have to
write some new code are when you have Microsoft Windows-specific dependencies,
such as Platform Invoke or COM-interop, or if you have third party controls for
which you don’t have the source code and which don’t have a Java
implementation. To aid you in translation of your code or in understanding the
issues of migration using Grasshopper, reference the Samples section of
the online integrated help
documentation. The integrated help is shown in Figure 4.
With the full online developer guide, reference, and
samples section in this Developer Zone, you have the documentation as
well as the tools to get you hopping, building Linux applications in Visual
Studio .NET!
|
|
Database access with the System.Data namespace
|
|
|
It is easy to access data through ADO.NET using Grasshopper. This is because
Visual MainWin provides an implementation of the System.Data namespace that is
built on top of JDBC. You can therefore use the System.Data classes as you have
always done without worrying about how JDBC handles it. The System.Data classes
have been tested with leading Enterprise databases, including Microsoft SQL
Server, Oracle, IBM DB2, Sybase, PostgreSQL and MySQL. The drivers for SQL
Server and PostgreSQL are included with the platform, and are automatically
installed for you on your application server.
|
Using Linux Inside Windows to run your application.
|
|
|
If you're not yet ready to install, configure and administer a Linux machine,
there's an alternative: It's called 'Linux Inside Windows' and is available for
download from the Grasshopper Web site. You don't need a new machine,
or any VM based software like VMWare or Microsoft Virtual PC -- it's completely
self-contained and runs within Windows. The download also contains a running
instance of Tomcat so you can run and deploy your Grasshopper applications. For
full instructions and a working example, we have a
step-by-step tutorial on the Grasshopper Developer Zone.
|
|
Conclusion
|
|
|
In this article, you took a whirlwind tour of some of the features of the Visual
MainWin for J2EE toolkit and what they allow you to do. You have seen how you
can use your existing C# or VB.NET skills to build applications in a whole new
arena – for Linux! And you can do all this without learning a new language, a
new dependency structure or a new IDE. Imagine taking what you have today, and
showing your boss how you ported it to Linux in just a few minutes!
|
|
|
|
|
|
|
|
|
|
|
|
|