Essential Java Servers
Indispensable ... they should be, consuming 250MB and up.
OpenFire
Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License.
It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber).
Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.
Capable of running as a public server with minimal fuss, can be made as secure as needed, great admin. interface.
Details -> Notes/JavaOpenfire
Jetty
The Jetty Web Server ... Eclipse Jetty.
If not a standard, it's close to one.
The Jetty Web Server provides an HTTP server and Servlet container capable of serving static and dynamic content either from a standalone or embedded instantiations. From jetty-7 on, the jetty webserver and other core compoments are hosted by the Eclipse Foundation. The project provides:
- Asynchronous HTTP Server
- Standards based Servlet Container
- Web Sockets server
- SPDY server
- Asynchronous HTTP Client
- OSGi, JNDI, JMX, JASPI, AJP support
Enterprise Servers
Apache_OFBiz
http://en.wikipedia.org/wiki/Apache_OFBiz
Apache OFBiz is an open source enterprise resource planning (ERP) system. It provides a suite of enterprise applications that integrate and automate many of the business processes of an enterprise
Apache OFBiz® is an open source product for the automation of enterprise processes that includes framework components and business applications for ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), E-Business / E-Commerce, SCM (Supply Chain Management), MRP (Manufacturing Resource Planning), MMS/EAM (Maintenance Management System/Enterprise? Asset Management).
Yes, it's big and complex, but is easier than many alternatives for small to medium sized business applications.
https://cwiki.apache.org/confluence/display/OFBIZ/Demo+and+Test+Setup+Guide
https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide
List of the major open source libraries used in Apache OFBiz.
Component | Description |
Apache Commons | A collection of reusable Java components like (FileUpload, IO, Digester, Logging, Codec, and Validator) |
Groovy | An agile dynamic language for the Java Platform |
Jython | An implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java |
Apache Ant | Software tool for automating software build processes. |
Apache Avalon | Software framework provide a reusable component framework for container (server) applications. |
Apache Geronimo | A certified Java EE based application server. |
JavaCC | Parser generator for the Java programming language similar to Yacc. |
Apache Xerces | An XML parser library for Java, C++ and Perl |
Apache Derby | Full-fledged relational database management system (RDBMS) with native Java Database Connectivity (JDBC) support |
Apache Tomcat | Web application server supporting Java Servlet 2.5 and JavaServer Pages (JSP) 2.1 |
Apache DataVision | Reporting tool similar to Crystal Reports and BIRT Project |
Jetty | Web application server supporting Java Servlet 2.5 and JavaServer Pages 2.1 |
Of all the above, only Jetty is small and simple enough for PyWacket applications, but it's good to know that a workable solution for a home business is scalable to a small business.
Java uFrameworks (?)
http://sparkjava.com/ - maybe
Spark is a simple and lightweight Java web framework built for rapid development.
If you're an experienced Ruby developer, or have experience with languages with similar syntax, you should definitely use Sinatra.
Possible Servers
Qpid
Apache Qpid is a reliable, asynchronous messaging system that supports the AMQP messaging protocol in several common programming languages
http://qpid.apache.org/components/java-broker/
https://qpid.apache.org/proton/overview.html
Qpid Proton is a high-performance, lightweight messaging library.
It can be used in the widest range of messaging applications, including brokers, client libraries, routers, bridges, proxies, and more.
Proton makes it trivial to integrate with the AMQP 1.0 ecosystem from any platform, environment, or language.
Active MQ
Apollo is a lighter-weight version of ActiveMQ.
http://activemq.apache.org/jmx.html
Apache ActiveMQ has extensive support for JMX to allow you to monitor and control the behavior of the broker via the JMX MBeans ( see #JMXNot ).
http://activemq.apache.org/apollo/
ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. It accomplishes this using a radically different threading and message dispatching architecture.
Like ActiveMQ, Apollo is a multi-protocol broker and supports STOMP, AMQP, MQTT, Openwire, SSL, and WebSocket.
http://activemq.apache.org/apollo/documentation/stomp-manual.html
HornetQ
HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.
https://developer.jboss.org/wiki/HornetQGeneralFAQs
HornetQ has zero dependencies on any JBoss Application server components, in fact HornetQ core has zero dependencies on any libraries other than the core JDK and Netty!
http://en.wikipedia.org/wiki/HornetQ
HornetQ is an open source asynchronous messaging project from JBoss. It is an example of Message Oriented Middleware.
HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system. During much of its development, the HornetQ code base was developed under the name JBoss Messaging 2.0 ...
Supports STOMP and now AMQP 1.0 protocols for cross-language clients
Mina
http://mina.apache.org/mina-project/index.html
Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily.
It provides an abstract ·event-driven · asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.
Apache MINA is often called:
NIO framework · library, client · server framework · library, or a networking · socket library.
http://en.wikipedia.org/wiki/Apache_MINA
Apache MINA (Multipurpose Infrastructure for Network Applications) is an open source Java network application framework. MINA can be used to create scalable, high performance network applications.
MINA provides unified APIs for various transports like TCP, UDP, serial communication. It also makes it easy to make an implementation of custom transport type.
MINA provides both high-level and low-level network APIs.
A user application interacts with MINA APIs, shielding the user application from low level I/O details.
MINA internally uses I/O APIs to perform the actual I/O functions. This makes it easy for the users to concentrate on the application logic and leave the I/O handling to Apache MINA ...
http://mina.apache.org/sshd-project/index.html
Apache SSHD is a 100% pure java library to support the SSH protocols on both the client and server side. This library is based on Apache MINA, a scalable and high performance asynchronous IO library ...
SSHD does not really aim at being a replacement for the SSH client or SSH server from Unix operating systems, but rather provides support for Java based applications requiring SSH support.
https://mina.apache.org/sshd-project/embedding_ssh.html
Embedding SSHD in 5 minutes
SSHD is designed to be easily embedded in your application as an SSH server. SSH Server needs to be configured before it can be started.
Essentially, there are three steps for creating the Server:
Create an instance of SshServer class
Configure the Server
Start the Server
Note code level 'create instance' ... looks tenuous
Kafka
http://www.infoq.com/articles/apache-kafka
Kafka architecture consists of the following components:
- A stream of messages of a particular type is defined as a topic.
- A Message is defined as a payload of bytes
- A Topic is a category or feed name to which messages are published.
- A Producer can be anyone who can publish messages to a Topic.
- The published messages are then stored at a set of servers called Brokers or Kafka Cluster.
- A Consumer can subscribe to one or more Topics and consume the published Messages by pulling data from the Brokers.
http://kafka.apache.org/ - Depends on ZooKeeper.
ZooKeeper
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
https://cwiki.apache.org/confluence/display/ZOOKEEPER/ProjectDescription
ZooKeeper allows distributed processes to coordinate with each other through a shared hierarchical name space of data registers (we call these registers znodes), much like a file system. Unlike normal file systems ZooKeeper provides its clients with high throughput, low latency, highly available, strictly ordered access to the znodes.
http://en.wikipedia.org/wiki/Apache_ZooKeeper
Apache ZooKeeper is a software project of the Apache Software Foundation, providing an open source distributed configuration service, synchronization service, and naming registry for large distributed systems.[clarification needed] ... was a sub-project of Hadoop but is now a top-level project in its own right.
JMX, Not !
JMX keeps popping up ...
http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html
... Februrary 18th, 2008 NEW RELEASE! ...
Downloads at http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html
http://en.wikipedia.org/wiki/Java_Management_Extensions
... supplies tools for managing and monitoring applications, system objects, devices (e.g. printers) and service-oriented networks. Those resources are represented by objects called MBeans (for Managed Bean). In the API, classes can be dynamically loaded and instantiated. Managing and monitoring applications can be designed and developed using the Java Dynamic Management Kit.
http://en.wikipedia.org/wiki/Java_Dynamic_Management_Kit
The Java Dynamic Management Kit or JDMK is a Java technology that provides a Java API and a collection of software tools for developing and designing JMX based applications. These applications are typically called smart agents as they generally provide an abstraction above the communication layer and may also provide a GUI using Swing or SWT. ...
... Java DMK is a toolkit that allows you to build monitoring and management solutions that answer the main challenge faced by networked environments today, namely dynamic maintenance. Such solutions are based on "smart agents" and result in faster problem resolution, reduced network traffic, less human intervention, and a means of managing complete systems or networks in an integrated way.
Development seems to be languishing.
http://docs.oracle.com/cd/E19206-01/816-4176/index.html
Looks like dead end ... exclude all dependencies to JMX.