= interviews
:revnumber: 2.0
:revdate: 2020/07/15



== ES Approaches

Entity System implementations are various!

As said, we are talking about Component oriented programming Entity System, implemented in Object oriented programming language and enviroment like Java!

So,we are

*  *not talking* about Groovy, Scala, Closure.. or any Java extension!
*  *not talking* about Entity system in any scope other than in a real-time application!
*  *focusing* in 'core' features, which exclude many specific usecases
*  *trying* to be unprejudiced , impersonal to make equitable judge.


=== Outline

.  Initial philosophy
.  Pure data or not?
.  Multi-threading, concurency enable or not?
.  Communication: Event messaging enable or not?
.  Is database (and other kind of persistent) friendly or not?
.  Is enterprise friendly (expanable/ extensible/ modulizable) or not?
.  Script possibilities?
.  Restrictions and limitation
.  Dependencies
.  Current status: Long term, stable, community?

The comparasions will focus in these below points, follow with the scope, status of each projects
Detail explanation of abbove points xref:jme3/contributions/entitysystem/points.adoc[points]


== ES projects interviews

These interviews are short but focus dicussion to help you get a clear view of underlying implementation of each project.


=== Artemis: General

GoogleCode: link:https://code.google.com/archive/p/artemis-framework/[https://code.google.com/archive/p/artemis-framework/]

Website: link:http://gamadu.com/artemis/index.html[http://gamadu.com/artemis/index.html]

Wiki: link:http://entity-systems.wikidot.com/artemis-entity-system-framework[http://entity-systems.wikidot.com/artemis-entity-system-framework]



==== Short conclusion

Artemis approach

.  Initial philosophy : Lightweight, small footprint and 1.5+
.  Pure data: No
.  Multi-threading, concurency: with care
.  Communication: Event messaging enable or not? No implementation yet
.  Is database (and other kind of persistent) friendly or not? No implementation yet
.  Is enterprise friendly (expanable/ extensible/ modulizable) or not? Not clear but because not pure data, consider Yes
.  Script possibilities? Yes
.  Restrictions and limitation: Custom System has to be extends base System; Processor base; Aspect base, Has documented about Dependencies between System
.  External library dependencies : No
.  Current status: Long term, stable, community? The most early Java ES, more than 3 years, kind of unactive, has a forum.

Read the full review for details


=== Zay-ES : @pspeed

Forum : link:https://hub.jmonkeyengine.org/c/user-code-projects/zay-es[https://hub.jmonkeyengine.org/c/user-code-projects/zay-es]

Wiki: xref:jme3/contributions/entitysystem.adoc[jme3:contributions:entitysystem]

Links: link:https://hub.jmonkeyengine.org/t/zay-es-links-more-chars-because-forum-is-dumb/27135[https://hub.jmonkeyengine.org/t/zay-es-links-more-chars-because-forum-is-dumb/27135]

// Interview: xref:jme3/contributions/entitysystem/interviews/zay-es.adoc[zay-es]

[IMPORTANT]
====
In my POV, Zay-ES has the most active development status and also the maintainer is a core JME3 dev, that's why all its functions and wisdoms are close to JME3!
====



==== Short conclusion

Zay-ES approach

.  Initial philosophy : Lightweight, small footprint and 1.5+
.  Pure data: Yes
.  Multi-threading, concurency: free, by design, but still _need better design contract_
.  Communication: Event messaging enable or not? No implementation yet
.  Is database (and other kind of persistent) friendly or not? No implementation yet
.  Is enterprise friendly (expanable/ extensible/ modulizable) or not? Not clear, _lack of design contract_
.  Script possibilities? Yes
.  Restrictions and limitation: Free of System implementation, but _lack of design contract_
.  External library dependencies : No
.  Current status: Long term, stable, community? more than 2 years, open source recently, active, has a forum in Jmonkey's hub.

Read the full review for details


=== EntityMonkey : @zzuegg

Post: link:https://hub.jmonkeyengine.org/t/entitymonkey-a-simple-entity-system-for-jme/23235[https://hub.jmonkeyengine.org/t/entitymonkey-a-simple-entity-system-for-jme/23235]

// Interview: xref:jme3/contributions/entitysystem/interviews/em-es.adoc[em-es]


=== Private : @Empire phoenix

// Interview: xref:jme3/contributions/entitysystem/interviews/emp-es.adoc[emp-es]


== Others


=== Java & Java extension


==== Spartan: [used for Slick. abandoned]

GoogleCode: https://code.google.com/archive/p/spartanframework/[https://code.google.com/archive/p/spartanframework/]


=== Not Java


==== C++


==== JavaScript


==== C#


==== ActionScript
