wiki:Notes/JavaServers

Essential Java Servers

Indispensable ... they should be, consuming 250MB and up.

OpenFire

Ignite Realtime site

The OpenFire XMPP Server.

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

http://ofbiz.apache.org/

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

https://qpid.apache.org/

http://qpid.apache.org/components/java-broker/

https://qpid.apache.org/releases/qpid-0.28/java-broker/book/Java-Broker-Configuring-And-Managing-JMX-Management.html

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/html-single/Programming_in_Apache_Qpid/index.html

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/

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

http://hornetq.jboss.org/

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

See Twisted SSH Server

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

http://zookeeper.apache.org/

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.

Last modified 8 months ago Last modified on 04/23/2017 07:15:32 PM