Enterprise Infrastructure Solutions

Chris Williamson

Wolfram Research

What is an enterprise?

An enterprise in the purest sense of the word is another way to refer to an organization (no matter how big or small).

Enterprise level software is software which provides business logic support functionality for an organization, typically in commercial organizations, which aims to improve the organization's productivity and efficiency. (http://en.wikipedia.org/wiki/Enterprise_software)

What technologies are used in an enterprise?

Company Web Site

Office Applications

Custom Applications

What technologies are used to implement enterprise solutions?

Mathematica

Java / Java Enterprise Edition

Web Server

Database

Why use Mathematica in your Enterprise?

Integrating Mathematica with your Enterprise is an effective way to deploy your Mathematica application to many people.

Mathematica is a powerful and effective language for solving many problems.

Often there are no software installations needed when integrated properly into an enterprise.

Software can be managed in a centralized and controlled location.

Why Software Developers Choose Java Technology

The Java programming language has been thoroughly refined, extended, tested, and proven by an active community of over five million software developers.

Mature, extremely robust, and surprisingly versatile Java technology has become invaluable in allowing developers to:

    * Write software on one platform and run it on practically any other platform
    * Create programs to run within a web browser and web services
    * Develop server-side applications for online forums, stores, polls, HTML forms processing, and more
    * Combine Java technology-based applications or services to create highly customized applications or services
    * Write powerful and efficient applications for mobile phones, remote processors, low-cost consumer products, and practically any device with a digital heartbeat

... its versatility, efficiency, platform portability, and security have made it the ideal technology for network computing ...

(http://www.java.com/en/about/)

The Java Community

Large corporations such IBM (Eclipse and IBM Websphere) and Oracle (JDeveloper) devote a lot of time, money, and organization to Java technology.

The Apache Software Foundation known for their high-quality open-source software has a large portion of its website devoted to Java technology.

With such a large and well organized community there are many fantastic tools available (many for free from Apache!).

These tools often greatly reduce development time and cost.

Because of the large user base, these tools are often very well tested and very robust which reduces support costs.

How do Mathematica and Java relate?

Both Mathematica and Java can be written on one platform and deployed to most any other platform with very little trouble.

Mathematica uses JLink to communicate with Java very effectively.

webMathematica is built upon Java Enterprise Edition technology.

Wolfram Workbench integrates very nice development environments for both Mathematica and Java code.

Some Mathematica applications such as DatabaseLink are implemented using Java and JLink.

Web Page

webMathematica is used to build web pages with Mathematica.

webMathematica uses a JSP tag library to call Mathematica code from a web page.

Special functions built into webMathematica are used to format results.

Build your own webapp!

webMathematica is not an application, it is a toolkit for building applications.

You can have many different webapps each serving a unique purpose.

Organizing your business logic into well-defined components is critical to your success.

Ask questions about requirements, development process, coding standards, and testing.

Development Environment

Using the proper IDE can really impact your productivity.

Wolfram Workbench is a very powerful tool for developing code in Mathematica as well as Java and many other languages.

Deployment is another very important factor to consider when building applications.

Apache Ant is a very useful tool for building and deploying webapps.

Wolfram Workbench is working hard to integrate with Ant.

Organizing code

Mixing code seems like the natural first step when developing an application quickly.  However in the long run it really hurts productivity.

Separating code allows for cleaner code which in turn makes it easier to understand, maintain, and debug.

It allows code to be developed and tested as smaller individual components and promotes reusability.

Code may be viewed in an optimal environment such as Wolfram Workbench by the optimal person such as a graphic designer or software engineer.

Model-View-Controller (MVC)

Model-view-controller (MVC) is a software architecture that separates an application's data model, user interface, and control logic into three distinct components so that modifications to one component can be made with minimal impact to the others.  (http://en.wikipedia.org/wiki/Model-view-controller)

Model: The domain-specific representation of the information on which the application operates...
View: Renders the model into a form suitable for interaction, typically a user interface element...
Controller: Processes and responds to events, typically user actions, and invokes changes on the model and perhaps the view.
(http://en.wikipedia.org/wiki/Model-view-controller)

Ajax

Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user makes a change. This is meant to increase the web page's interactivity, speed, and usability. (http://en.wikipedia.org/wiki/Ajax_%28programming%29)

Expand your enterprise infrastructure!

Use a database to maintain data across applications

Use a web service to share data with applications across the network

Use ant to build your application.

Databases

Databases are useful for efficiently searching through large amounts of data in an organized manner.

Database are also very effective at maintaining the integrity and quality of data.

A database server is very convenient for accessing data in a centralized location.

DatabaseLink can be used to connect to databases with Mathematica.  It works in webMathematica as well.

DatabaseLink is implemented using JDBC which allows users to connect to many different databases in a uniform manner.

JDBC connections may be pooled for efficiency on the servers.

Web Services

Web services are programmatic interfaces made available on the network which are used for application to application communication.

Web services can  be used to provide additional functionality to an application.

Web services can also be used to retrieve data for use within an application.

With the proper tools, web services are an easy and convenient way of communicating with remote applications within programs.

Web Services Package may be used to call a web service method from Mathematica.

Web Services tools for webMathematica are in the works!

Ant

Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles. (http://ant.apache.org/manual/intro.html)

Ant is useful for do everything that is required to create your application including compiling, generating documentation, archiving, etc.

JLink provides tools for calling Mathematica from Ant.

Keep enhancing your enterprise infrastructure!

Use search technology such as Lucene to search your site

Use logging technology such as log4j to log information about your infrastructure.

Use technologies such as JMeter to test your webapp

Build a high availability system using multiple Tomcat servers.