Songbird Technologies :: Wiki : JavaSystemAPIForLinux

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Most recent edit on 2007-08-21 03:08:27 by PremK

Additions:
Singularity - The OS developed using .NET by MS Research



Edited on 2007-08-13 01:56:37 by PremK

Additions:
Alternatives To Java
BEA Weblogic to run without requiring an OS


Deletions:
Alternatives To Java




Edited on 2007-07-28 04:00:17 by PremK

Additions:
Java already includes pretty much everything in the list above and may be the most appropriate option for a class library on Linux. Some of the reasons I think so:
1. Comprehensive API covering pretty much everything in the list above.
2. Cross-platform support
3. Nice ability for managing the installation of classes (and not just full blown applications)
4. Technology such as JNDI for directory services management.
5. Support for life-cycle management of classes as well as applications
6. Sophisticated deployment tools and architecture.
7. Sophisticated management of dependencies in packages (eg: Maven)
8. Sophisticated tools for interoperability with non-java software (JNI)
9. Excellent support for networking
10. Excellent management tools
11. Same API can be used within web applications as well as desktop applications
12. Widespread availability of first-class libraries and tools (free and commercial)
13. Maturity
14. Ease of installation
15. Widely supported by enterprises
16. Well documented
17. Frequently updated. A lot of research goes into the development of the Java SDK
18. Excellent developer support
19. Projects such as Terracotta which allows for clustering of JVMs.
1. Performance - One of the concerns about Java is performance. A Java application can take a while to startup, and this has primarily to do with the time it takes for the JVM to start up. If the JVM is started when the Linux PC boots up, then perhaps this delay won't occur when individual Java applications are started up.
2. Stability - What are the implications when a single JVM runs multiple java applications?
I have listed a possible bootup sequence on a computer running Linux and utilizing this Java System API.
1: The Linux PC will be started up with very few services running.
2: The Java Virtual Machine will be started up. Perhaps Terracotta can be used for clustering the VM.
3: The Apache Directory Server starts up
4: The J2EE application server starts up. This provides the JNDI infrastructure
5: The Configuration EJB entity starts up
6: The Configuration Management Webservice is started which can be used to read/write configuration entries using the EJB
7: The Configuration Information is saved in the database or written to an XML file.
  • Versioning support is included
  • Transaction support is included
8: The environment is now fully setup and ready to service requests from any application.
9: Additional services can now start up. These services can install their own beans into the J2EE framework
10: Applications connect to the Configuration class using JNI and are able to retrieve/save their configuration settings

Deletions:
You might be wondering whats so new about this. Doesn't Mono already do this? Doesn't Glib? and doesn't J2EE? Yes, they all do many of these things. But what is missing is a system-wide configuration management API.
Using Java
Java may be the most appropriate option for a class library on Linux. Some of the reasons I think so:
1 Comprehensive API covering pretty much everything in the list above.
2 Widely supported by enterprises
3 Frequently updated
4 Easily installable
5 Wide developer support
6 Well documented
1 One of the concerns about Java is performance. A Java application can take a while to startup, and this has primarily to do with the time it takes for the JVM to start up. If the JVM is started when the Linux PC boots up, then perhaps this delay won't occur when individual Java applications are started up.
2 Stability - What are the implications when a single JVM runs multiple java applications?
The Linux PC will be started up with very few services running.
The Java Virtual Machine will be started up. Perhaps Terracotta can be used for clustering the VM.
The Apache Directory Server starts up
The J2EE application server starts up. This provides the JNDI infrastructure
The Configuration EJB entity starts up
The Configuration Management Webservice is started which can be used to read/write configuration entries using the EJB
The Configuration Information is saved in the database or written to an XML file.
- Versioning support is included
- Transaction support is included
The environment is now fully setup and ready to service requests from any application.
Additional services can now start up. These services can install their own beans into the J2EE framework
Applications connect to the Configuration class using JNI and are able to retrieve/save their configuration settings




Edited on 2007-07-28 03:45:44 by PremK

Additions:
~- Comprehensive set of data structures and algorithms



Edited on 2007-07-27 06:38:14 by SongbirdAdmin

Additions:
The Linux PC will be started up with very few services running.
The Java Virtual Machine will be started up. Perhaps Terracotta can be used for clustering the VM.
The Apache Directory Server starts up
The J2EE application server starts up. This provides the JNDI infrastructure
The Configuration EJB entity starts up
The Configuration Management Webservice is started which can be used to read/write configuration entries using the EJB
The Configuration Information is saved in the database or written to an XML file.
- Versioning support is included
- Transaction support is included
The environment is now fully setup and ready to service requests from any application.
Additional services can now start up. These services can install their own beans into the J2EE framework
Applications connect to the Configuration class using JNI and are able to retrieve/save their configuration settings




Edited on 2007-07-27 00:33:30 by SongbirdAdmin

Additions:
Configuration config = ConfigurationManager.getConfiguration();

Deletions:
Configuration config = Configuration.getConfiguration();



Edited on 2007-07-26 09:21:43 by PremK

Additions:

Information on some of the other alternatives to Java and why I don't think they are as desirable as Java is given here


Deletions:
[[AlternativesToJava AlternativesToJava]



Edited on 2007-07-26 09:13:23 by PremK

Additions:
[[AlternativesToJava AlternativesToJava]

Deletions:
Using Mono
Mono already does a lot of what I have just stated. Mono is fairly comprehensive. It includes many of the functions already listed above to varying extents.
However, the problem with Mono is not the technology, but the fact that it is still not clear what, if any, steps Microsoft would take to squash it if it seems like Mono is going to pose them any business inconvenience. The problem with Mono is really that it is still not clear if it violates any patent - I think it is quite likely that it does.
Using Glib
Glib is also a fairly comprehensive API, but it stlll lacking in many areas such as Directory Services API, Configuration Management, Access Control Management, Security and Encryption etc.
Using wxwidgets /fltk etc
WxWidgets is also a fairly comprehensive class library, but it is still missing some vital functionality which can be satisfied only by using external libraries.




Edited on 2007-07-26 07:21:31 by PremK

Additions:
Go to Prem Kurian Philip's Home Page





Oldest known version of this page was edited on 2007-07-26 05:29:19 by PremK []
Page view:

Java as the primary class library for Linux


Introduction
I have been thinking about the benefit of having a system-wide class library on Linux in the lines of the .NET framework on Windows. This library could have a nice namespace hierarchy allowing for common functions to be grouped together in related classes. This class library could also include additional classes for configuration management - say, for instance, when you want to get the address to the SMTP server, you could just use something like this:

Configuration config = Configuration.getConfiguration();
String smtpServerIP = config.getSetting("SMTP_SERVER_IP");


This class library must cover all aspects of application programming including:

(NOTE: I may have missed a few here)

You might be wondering whats so new about this. Doesn't Mono already do this? Doesn't Glib? and doesn't J2EE? Yes, they all do many of these things. But what is missing is a system-wide configuration management API.

Using Mono
Mono already does a lot of what I have just stated. Mono is fairly comprehensive. It includes many of the functions already listed above to varying extents.

However, the problem with Mono is not the technology, but the fact that it is still not clear what, if any, steps Microsoft would take to squash it if it seems like Mono is going to pose them any business inconvenience. The problem with Mono is really that it is still not clear if it violates any patent - I think it is quite likely that it does.

Using Glib
Glib is also a fairly comprehensive API, but it stlll lacking in many areas such as Directory Services API, Configuration Management, Access Control Management, Security and Encryption etc.

Using wxwidgets /fltk etc
WxWidgets is also a fairly comprehensive class library, but it is still missing some vital functionality which can be satisfied only by using external libraries.

Using Java
Java may be the most appropriate option for a class library on Linux. Some of the reasons I think so:
1 Comprehensive API covering pretty much everything in the list above.
2 Widely supported by enterprises
3 Frequently updated
4 Easily installable
5 Wide developer support
6 Well documented

Concerns with Java
1 One of the concerns about Java is performance. A Java application can take a while to startup, and this has primarily to do with the time it takes for the JVM to start up. If the JVM is started when the Linux PC boots up, then perhaps this delay won't occur when individual Java applications are started up.
2 Stability - What are the implications when a single JVM runs multiple java applications?

Overall Architecture

1 Java API
2 J2EE Server
3 Configuration Management Service and classes
4 Configuration Store
5 Applications


Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 2.8889 seconds