Skip to content

Commit 9f8870e

Browse files
committed
Garden tending
1 parent ebf688d commit 9f8870e

File tree

4 files changed

+113
-0
lines changed

4 files changed

+113
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Distrib

README.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Elko
2+
3+
### A server framework for stateful, sessionful applications in the web
4+
5+
Elko is a Java-based server framework for building stateful, sessionful
6+
applications in the web. It is especially suited to applications that require
7+
realtime interaction among multiple clients, such as realtime text chat or
8+
multiplayer games, or that have a strong "push" component wherein the server
9+
needs to initiate much of the interaction, such as service monitors or realtime
10+
auctions.
11+
12+
Much of the scalability of the web derives from the statelessness of the HTTP
13+
protocol and the consequent ease with which load may be distributed by simply
14+
replicating web servers. However, there remain a core of interesting and
15+
valuable interactive network applications that are fundamentally stateful, and
16+
trying to shoehorn these into the web paradigm can be awkward and frustrating.
17+
18+
Elko is an application server framework designed to address this, enabling you
19+
to quickly and easily create applications that require a live, truly
20+
bidirectional dialog between client and server.
21+
22+
Elko is highly scalable and very performant. We have successfully run
23+
configurations supporting upwards of 150,000 concurrently connected real-time
24+
users on a single AWS "large" server instance.
25+
26+
## General Information
27+
28+
This README describes Elko release 2.0.1, dated 23-February-2016.
29+
30+
The authoritative source and documentation for Elko is maintained at:
31+
32+
https://github.com/FUDCo/Elko (i.e., here)
33+
34+
or
35+
36+
http://elkoserver.org (which currently redirects to here)
37+
38+
39+
Background and theory are discussed in a series of three [Habitat
40+
Chronicles](http://habitatchronicles.com/) blog posts:
41+
42+
* [Part I: The Life, Death, Life, Death, Life, Death, and Resurrection of The
43+
Elko Session
44+
Server](http://habitatchronicles.com/2009/09/elko-i-the-life-death-life-death-life-death-and-resurrection-of-the-elko-session-sever/)
45+
46+
* [Part II: Against Statelessness (or, Everything Old Is New
47+
Again)](http://habitatchronicles.com/2009/09/elko-ii-against-statelessness-or-everything-old-is-new-again/)
48+
49+
* [Part III: Scale
50+
Differently](http://habitatchronicles.com/2009/09/elko-iii-scale-differently/)
51+
52+
Elko is open source software, under the MIT license. See the file LICENSE.md
53+
54+
## What's Here
55+
56+
* ServerCore -- contains the Elko server framework itself, along with its
57+
documentation.
58+
59+
* Web -- contains client side JavaScript and HTML for interacting with Elko
60+
applications from a web browser.
61+
62+
* Run -- contains a variety of shell scripts for running and managing various
63+
server farm configurations, as well as the beginnings of a web-based
64+
adminstration console (written in PHP).
65+
66+
* ZeroMQ -- contains a pluggable extension that lets Elko servers talk to
67+
things using the [ZeroMQ](http://zeromq.org) distributed messaging framework.
68+
69+
#### Building
70+
71+
To build the Java code from the sources directly as is, you will also need the
72+
[jdep](http://www.fudco.com/software/jdep.html) utility and GNU Make. Jdep is
73+
currently hosted on my own website, but I hope to have it moved to GitHub
74+
shortly. I'll update this page when that happens.
75+
76+
Note that most people doing Java development these days use one of the several
77+
popular Java IDEs and/or [Maven](https://maven.apache.org), but at the moment
78+
there's no support here for these; I'm an old time Unix/emacs guy and never had
79+
much use for such newfangled contraptions (especially Maven, yuck). However,
80+
the Java source tree is structured in the conventional way and the classes have
81+
few external dependencies outside the normal class libraries that are part of
82+
the standard JDK, so you should just be able to import the source tree into
83+
your favorite IDE and press the build button.
84+
85+
Much more detail on building will be presented in an accompanying BUILD.md file
86+
when I get done writing it.
87+
88+
All the Java code works on any standard, reasonably current JVM. The various
89+
shell scripts do assume a Unix shell environment, but Cygwin will suffice and
90+
they are not deeply essential anyway.
91+
92+
#### Documentation
93+
94+
Currently, documentation is in the ServerCore/doc directory. While extensive,
95+
it badly needs to be updated to be friendlier with the new GitHub environment.
96+
I also need to run JavaDoc on the code and find a home for the resulting web
97+
pages. However, if you run JavaDoc on the sources yourself, the resulting
98+
output is very usable -- the code is well documented in this regard.
99+
100+
#### Binaries
101+
102+
My goal is to eventually make precompiled .jar files available for this stuff.
103+
The appropriate manner for this to be hosted in the GitHub world is still
104+
something I haven't researched (I could just commit the .jar files to the repo,
105+
but that feels wrong). Once this gets resolved, this README will be updated
106+
accordingly.

ServerCore/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
built

TODO.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
review and edit everything in ServerCore/doc
2+
create and add elkologosmall.png to Run/manage, ServerCore/doc
3+
document Run stuff
4+
document required .jars
5+
rewrite ServerCore/doc/runenv.t

0 commit comments

Comments
 (0)