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
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
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
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
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
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-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.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.
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.
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
"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
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
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
Subpages for Notes/Java