|
I've been interested in Puakma for a long time.
The main reason being that it fits into the
mid size companies market for Java/Web application
development very well. This is because it has
all the functionality you need in a very small
footprint, but without all the administration
and costs of say applications like IBM's Websphere.
To start a quote from the creater of Puakma:
|
"Don't get me wrong
- I am a Domino fan.... the right tool
for the right job. Domino works really
well when you have small apps eg Document
Libraries and discussion-style databases.
Where it falls over is in the level of
control you get over your programming
environment and the data source. NSF files
just don't cut it in bigger apps (consider
something like a timesheeting app - people,
projects, jobs, time entries etc - all
related. Not to mention the inherent performance
problems when you get a large number of
documents in a single NSF file.
On a public/internet website you can't
stop some of the Domino default behaviours
which may compromise your databases. $DefaultNav
is a nasty, along with ?ReadViewEntries.
Then there's the custom login form problems,
stopping people opening forms (easily)
if they know the names, ...
Puakma is aimed at that next level up:
More complex web apps. Obviously the multi-platform
thing is great, and the server itself
is incredibly extensible: write your own
authentication mechanisms, develop your
own custom server AddIns. The relational
datasource is used cleverly and much of
the RDBMS complexity is hidden from developers,
but at the same time if you want to mess
about with the gamut of JDBC you can.
If you have a large Domino environment,
definitely don't throw it out! Puakma
represents a very cost effective way to
implement complex web apps. You can even
leverage some of that Domino infrastructure:
use it as your mail router, run LDAP so
you can log in your Puakma users against
it, use CORBA calls from Puakma to leverage
the data in it, etc.
The world seems to be moving to a "mix
and match" software environment,
and Puakma acts as that glue very well."
|
Ok - to clarify what Puakma actually is:
Puakma is a 100% Java application server, providing
application and collaboration services.
The core is a http server and chat facility,
but Puakma services may be easily extended and
enhanced. Puakma sits in the middle-tier between
your clients and their data.
The way Puakma works is there are a number
of java JAR/CLASS files, together with configuration
and language files, typically installed in /puakma/.
The data is provided by a JDBC data source,
such as mySQL, DB/2, Oracle, etc. This RDBMS
must be purchased and installed seperately to
your puakma installation. The RDBMS may or may
not be physically on the same machine, obviously
performance will be better if they are both
on the same machine.
In using Puakma, there are a number of advantages
to be gained:
|
Hardware/software
architecture agnostic
Flexible, scalable and extensible
Tightly integrated with relational data
Easy to install
Secure
Very easy to create custom web applications
Integrated application services: chat,
http, authentication
Low TCO, leverages existing architecture
|
In addition, Puakma will run on any hardware/Operating
system that has a full Java 1.4 runtime environment.
This may be x86 chips, RISC chips, Microsoft
Windows, Sun Solaris, Linux to name a few. It
is a full multi-threaded application so will
scale up to the hardware it is installed on.
For best performance, ensure you have a hotspot
(or better) JVM.
One of the reasons I am particulary keen on
Puakma, apart from what I have already mentioned,
is to do with the DXFramework.
At the moment the DXFramework is reliant on
Domino for administration, delivery to Web Browser
of final application and back end data store.
Software like Puakma will enable me to make
the DXFramework totally web server, platform
and data store independant -which really excites
me.
Basically you could web enable your Domino Applications
using the DXFramework and should you ever want
to upgrade and go to J2EE or use another backend
database such as Oracle, DB2, MySQL etc then
you are half way there without doing anything.
From my experience in the industry - that is
a huge benefit.
In order to install Puakma, you require the
following:
|
1. Java Runtime Environment
1.4 or greater from www.java.sun.com
2. A JDBC compliant relational database
system (RDBMS) and the JDBC client-side
driver.
3. Some technical knowledge of networking
and web technologies
|
Ok I was frightened by this to start with -
make sure I had a Java Runtime Environment,
install a JDBC compliant relational database
system, then Puakma and connect the two etc
etc - sounds like - well something I will do
tommorrow instead!
In the end though I had to be brave and install
the thing. First of all a relational database
system. I chose MySQL firstly because I wanted
some experience in that field, secondly due
to the fact the product is free (under the terms
of the GNU General Public License (GPL)) and
thirdly Puakma comes with a JDBC driver for
MySQL (it is preconfigured for mySQL) and the
help guides use that as an example.
In the past - free software - can't be that
good - can't rely on it for mission critical
stuff - well in fact with mySQL you can - it
is in fact used by companies like Yahoo! Finance,
MP3.com, Motorola, NASA, Silicon Graphics, and
Texas Instruments to name a few in mission critical
applications. Well if its good enough for them
etc.
I started by checking my java version by going
to a command prompt and typing 'java
-version'. It told me I already had 1.4
installed - so that was fine. Should that not
be the case for you the file to run is available
here: http://java.sun.com/j2se/1.4.1/download.html.
Next is the installation of mySQL - this is
the bit I was nervous about! - You can download
mySQL from here: http://www.mysql.com/downloads/index.html.
Well I ran the installation program - no sooner
as I started and confirmed the installation
path and selecting a typical installation I
had a finish button to press! That was quick
and easy!
The only additional configuration required for
MySQL was to configure a user and password.
So I ran the winmysqladmin
application that can be found in the \bin folder
of the mySQL installation folder. As soon as
you run it for the first time it displays the
default logon user as root and a blank password.
I entered my password and then closed mySQL
and restarted it.
Thats that done I had a relational database
running on my XP Laptop. Next for the actual
Puakma server install. The actual installation
file can be found on the Puakma site under "Download
Puakma". Once downloaded (670kb file!!),
you simply unzip to where you want Puakma to
reside - for me it was c:\puakma.
As I said before, Puakma is actually preconfigured
to run with mySQL. The first thing you have
to do, is to edit the puakma.config file with
your mySQL user name and password. This file
is located in the puakma/config folder and is
entitled puakma.config.
ie:
|
#********* JDBC SETTINGS
**********
# Note: Paths/urls are CaSe senSitive!
#*** for mysql ***
SystemDBName=puakma
SystemDBURL=jdbc:mysql://localhost:3306/
SystemDriverClass=org.gjt.mm.mysql.Driver
SystemUser=root
SystemPW=password
|
With that done and saved, time to run the installation
program. You need a command prompt to do this.
Go to your Puakma\bin folder and run the SetupDB.bat
file. This will build the required tables (within
mySQL) in a database called puakma (the commands
for building the database and tables can be
found in /puakma/config/datadef.sql).
This batch file will pause part-way through
and display a username and password for your
installation.
Make a careful note of these before you press
a key to continue! The username is 'SysAdmin'
and the password is a unique six-digit number.
With that successfully done - time to launch
the Puakma Server. Again in the puakma\bin folder,
run the pmaStart.bat
file. You should then see the server loading:

Ok the next part is accessing Puakma itself
via a web browser. I started Internet Explorer
typed in 127.0.0.1 (localhost - I am running
everything from my laptop) and I instantly got
the following logon prompt:

Once logged on the default system administration
page is shown:

Thats it all done - we have a relational database
running, a java web server running (puakma),
and Puakma can read/write/create databases/tables.

As mentioned before, the concept of Puakma
really appeals to me. The fact I have my hands
on a Java Web Server that runs on any platform
(that can run the Java Runtime) and can connect
to any database that is JDBC Compliant.
Then if you take into account that with mySQL
costing zero, Puakma costing US $1,500 per server
(not per processor). You have some heavyweight
software without the heavyweight pricing, installation
and administration costs. I myself will be doing
a lot more work on this!
Coming soon... Further articles on Puakma which
will cover administration and development.
|