wiki:Notes/Java

The Big J

Java ... that is to say Oracle Java ...

... or that is to say ( after including various licensing hassles ) Open Java ...

... or that is to say ( after excluding various licensing hassles ) OpenJDK ...

... I think that's it.

Reservations and Realizations

It's more resource intensive than Python ( especially memory ), but how much more so really ?

Roughly Apples to Apples JEdit 70-80 MB
DR Python 30-40 MB
SPE 40-50 MB
Much bigger than either of previous Spyder 90-100 MB
Open Office Draw 60-70 MB
Open Office Writer 50-60 MB ( not so bad )

I think I need to get over over-focus on memory consumption ... Java probably same or better on CPU than anything except C++, if truth be told.

My limit seems to be 250MB ... the "250MB Barrier" if you will.

Java Apps

http://en.wikipedia.org/wiki/Category:Free_software_programmed_in_Java_%28programming_language%29

Ubiquitous Desktop

OpenOffice ... Apache Open Office

See OpenOffice

Essential Servers

One excellent reason to use Java -> JavaServers#OpenFire

Another very good reason to use Java -> JavaServers#Jetty

Java Code Editors

Eclipse

NetBeans

Java Frameworks

Usually big and often resource hungry, some very hungry indeed, 1GB of memory and up ...

For a Pythoner like me, Java frameworks are more interesting for the basic component framework and standards-based development practices as they are for 'application level' capabilities.

For instance, Trac has direct support for a Java-style interface and components architecture and, while not very sophisticated, it's a big help in overcoming significant issues with Python scalability.

Popular:

Spring MVC
Grails
Vaadin
GWT
Wicket http://wicket.apache.org/ Maven
Play
Struts http://struts.apache.org/birdseye.html
JSF

##TODO

http://en.wikipedia.org/wiki/Java_view_technologies_and_frameworks

http://en.wikipedia.org/wiki/List_of_web_service_frameworks - many of them Java

http://java.dzone.com/articles/which-integration-framework

Three integration frameworks are available in the JVM environment, which fulfil these requirements: Spring Integration, Mule ESB and Apache Camel. They implement the well-known Enteprise Integration Patterns (EIP, http://www.eaipatterns.com) and therefore offer a standardized, domain-specific language to integrate applications.

See JavaSpring

Tapestry Framework

http://tapestry.apache.org/

Component oriented framework for creating dynamic, robust, highly scalable web applications in Java.

Seems to be smallest of the giants, but will run in under 250MB ?

Spark Framework

http://sparkjava.com/

A tiny Sinatra inspired framework for creating web applications in Java 8 with minimal effort ...

Spark focuses on being as simple and straight-forward as possible, without the need for cumbersome (XML) configuration, to enable very fast web application development in pure Java with minimal effort ...

http://sparkjava.com/download.html

Spark is a true micro Java web framework. Its total size is less than a megabyte, and to keep it lean and clean we decided to cut support for Java 7 in Spark 2.

If you are stuck with Java 7 for whatever reason, you unfortunately have to have to use Spark 1, or some other Java web framework (Play is pretty good!).

https://github.com/perwendel/spark

http://en.wikipedia.org/wiki/Spark_%28software%29

Spark is a free and open source software web application framework and domain-specific language written in Java.

It is an alternative to other Java web application frameworks such as JAX-RS, Play framework and Spring MVC.

Play Framework

https://www.playframework.com/

Play Framework makes it easy to build web applications with Java & Scala.

Play is based on a lightweight, stateless, web-friendly architecture.

Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications.

http://en.wikipedia.org/wiki/Play_framework

Play is an open source web application framework, written in Scala and Java, which follows the model–view–controller (MVC) architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser.[2]

Support for the Scala programming language has been available since version 1.1 of the framework.[3] In version 2.0, the framework core was rewritten in Scala. Build and deployment was migrated to SBT, and templates use Scala instead of Groovy.

Apache Camel Integration Framework

http://camel.apache.org

Camel empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based Fluent API, Spring or Blueprint XML Configuration files, and a Scala DSL. This means you get smart completion of routing rules in your IDE, whether in a Java, Scala or XML editor.

Their definition of 'integration design patterns' seems to be somewhere between Orchestration and SOA.

http://camel.apache.org/enterprise-integration-patterns.html

Camel (http://camel.apache.org) is an open-source, Java-based project that helps the user implement many of the design patterns in the EIP book?.

Agent Frameworks

JADE

http://jade.tilab.com/

JADE (Java Agent DEvelopment Framework) is a software Framework fully implemented in the Java language. It simplifies the implementation of multi-agent systems through a middle-ware that complies with the FIPA specifications and through a set of graphical tools that support the debugging and deployment phases.

A JADE-based system can be distributed across machines (which not even need to share the same OS) and the configuration can be controlled via a remote GUI. The configuration can be even changed at run-time by moving agents from one machine to another, as and when required ...

Besides the agent abstraction, JADE provides a simple yet powerful task execution and composition model, peer to peer agent communication based on the asynchronous message passing paradigm, a yellow pages service supporting publish subscribe discovery mechanism and many other advanced features that facilitates the development of a distributed system.

FIPA - http://www.fipa.org/

FIPA is an IEEE Computer Society standards organization that promotes agent-based technology and the interoperability of its standards with other technologies.

http://jade.tilab.com/wadeproject/

WADE - Workflows and Agents Development Environment

The key component of the WADE platform is the WorkflowEngineAgent class that extends the basic Agent class of the JADE library embedding a small and lightweight workflow engine. Besides normal JADE behaviours, a WorkflowEngineAgent is therefore able to execute workflows represented according to a WADE specific formalism.

http://jade.tilab.com/amuseproject/

AMUSE - Agent-based Multi-User Social Environment

... a software platform that facilitates the development of distributed social applications involving users that cooperate/compete to achieve common or private goals. Within this scope the primary focus of Amuse is on multi player on-line games.

http://en.wikipedia.org/wiki/Java_Agent_Development_Framework

Rule Engines

Java RE Spec - > http://en.wikipedia.org/wiki/JSR_94

Candidates

Many candidates, if you have 4GB+ of memory. However, there are a few light-weight Java rule engines ( 'light-weight' relatively speaking ).

http://openrules.com/ruleengine.htm ( well under 1GB )

http://www.drools.org/ ( still have to expect 1GB )

Kind of interesting about Drools resource consumption

http://www.dtrules.com/newsite/

DTRules has the following advantages:

  • Very fast
  • Easy to integrate into Java applications
  • Easy to debug
  • Easy to understand, due to its Domain Specific Language (DSL) support
  • Small footprint
  • Open Source, very flexible license (Apache 2.0 Open Source License)
  • Compatible with most other Open Source Licenses

DTRules does have (in some sense) some disadvantages:

  • No Forward Chaining
  • No Backward Chaining
  • Limited Tool support at this time

http://en.wikipedia.org/wiki/DTRules

http://en.wikipedia.org/wiki/OpenL_Tablets

http://openl-tablets.sourceforge.net/

Other

Others may have good design documentation and articles about RBS.

http://www.jessrules.com/

http://www-01.ibm.com/software/integration/business-rule-management/jrules-family/

"JRules BRMS is Now IBM Operational Decision Manager"

http://en.wikipedia.org/wiki/IBM_Operational_Decision_Management

http://www-03.ibm.com/software/products/en/odm

http://www.oracle.com/technetwork/articles/java/javarule-139829.html

Untouchables

But may have good info ...

http://www.pega.com/

http://www.oracle.com/technetwork/articles/javase/javarule-139829.html

http://www.oracle.com/technetwork/middleware/business-rules/overview/index.html

http://www.oracle.com/technetwork/middleware/business-rules/documentation/index.html#121300

http://docs.oracle.com/middleware/1213/soasuite/index.html

http://www.oracle.com/us/products/middleware/soa/suite/overview/index.html

Semantic 'RDF' Inference Engines

Semantic engines are a Java speciality, many of them closed source and/or closed licence. There are some relatively small open-source, open-licence engines, but this whole area needs more work on my part.

http://jena.apache.org/

Interact with the core API to create and read Resource Description Framework (RDF) graphs. Serialise your triples using popular formats such as RDF/XML or Turtle.

Query your RDF data using ARQ, a SPARQL 1.1 compliant engine. ARQ supports remote federated queries and free text search.

Persist your data using TDB, a native high performance triple store. TDB supports the full range of Jena APIs.

Expose your triples as a SPARQL end-point accessible over HTTP. Fuseki provides REST-style interaction with your RDF data.

Work with models, RDFS and the Web Ontology Language (OWL) to add extra semantics to your RDF data.

Inference API - Reason over your data to expand and check the content of your triple store. Configure your own inference rules or use the built-in OWL and RDFS reasoners.

https://marmotta.apache.org/

Apache Marmotta is an Open Platform for Linked Data.

The goal of Apache Marmotta is to provide an open implementation of a Linked Data Platform that can be used, extended and deployed easily by organizations who want to publish Linked Data or build custom applications on Linked Data.

Read-Write Linked Data server
RDF triple store with transactions, versioning and rule-base reasoning
LDP, SPARQL and LDPath query
Transparent Linked Data Caching
Integrated basic security mechanisms

http://marmotta.apache.org/platform/index.html

https://prova.ws/

"Prova is an economic and efficient, Java JVM based, open source rule language for reactive agents and event processing. It combines imperative, declarative and functional programming styles."

http://clarkparsia.com/pellet

Semantic Wikis

Interesting ( look at annotation feature ) ... but no SQLite.

http://extensions.xwiki.org/xwiki/bin/view/Extension/Semantic+XWiki

Semantic XWiki Extension integrates XWiki with Jena semantic web framework and adds a set of semantics tags

Last activity 2012 ...

http://www.objectsecurity.com/en-products-other-tech-semxwiki.html

http://www.xwiki.org/xwiki/bin/view/Main/WebHome

XWiki offers both a generic platform for developing collaborative applications using the wiki paradigm and projects developed on top of it.

http://enterprise.xwiki.org/xwiki/bin/view/Main/Download

http://platform.xwiki.org/xwiki/bin/view/Features/

http://design.xwiki.org/xwiki/bin/view/Design/Annotation+Feature

https://github.com/xwiki

http://dev.xwiki.org/xwiki/bin/view/Community/SourceRepository

XWiki is not a single product, but an ecosystem of top-level projects.

xwiki-commons Technical libraries common to several other top level projects. Can be used by projects outside of the XWiki ecosystem; not related to the wiki domain.

xwiki-rendering Rendering library to convert some input syntax into another output syntax. Can be used by projects outside of the XWiki ecosystem. Uses xwiki-commons.

xwiki-platform Reusable components/parts used by other top level projects, making up a wiki runtime. Uses xwiki-commons and xwiki-rendering.

xwiki-enterprise A professional wiki with enterprise features. Uses xwiki-commons, xwiki-rendering and xwiki-platform.

xwiki-dev-tools Various internal subprojects for improving the XWiki development experience (release scripts, helper to easily debug XWiki inside Eclipse, etc).

http://platform.xwiki.org/xwiki/bin/view/DevGuide/Architecture

Network Tools

That is, small Java network tools, if they exist.

JSch

http://www.jcraft.com/jsch/

JSch is a pure Java implementation of SSH2. JSch allows you to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and you can integrate its functionality into your own Java programs. JSch is licensed under BSD style license.

Apparently runs on Windows

Security ? Probably OK running as private or intermittent semi-private.

Utilities

muCommander

http://en.wikipedia.org/wiki/MuCommander

muCommander is a lighweight, open-source, cross-platform file manager that will run on any operating system supporting Java.

It features a Norton Commander style, dual-pane interface to allow easy manipulation of files with many keyboard shortcuts.

Pre-compiled builds are available for Mac OS X, Microsoft Windows, Linux, Solaris, FreeBSD, OpenVMS, and the software can be run from the Internet via Java Web Start.

Last 'News' is Aug 2012

Also See

Query wiki for 'java'


Subpages for Notes/Java

Last modified 8 months ago Last modified on 04/23/2017 06:45:31 PM