1
0
Fork 0
Classical object-oriented framework for JavaScript [unmaintained] https://gnu.org/software/easejs
 
 
 
 
 
 
Go to file
Mike Gerwitz 86a4703a1c
Miscellaneous performance enhancements
These are the beginning of some smaller performance optimizations brought on
by the v8 profiler. This includes removal or movement of over-reaching
try/catch blocks and more disciplined argument handling, neither of which
can be compiled into machine code (permanently, at least). This also removes
some unneeded code, adds some baseline performance test cases, and begins
generic performance test output and HTML generation which will be used in
the future for more detailed analysis.

This is just a starting point; there's more to come, guided by profiling.
The trait implementation needs some love and, since its development is not
yet complete, that will be optimized in the near future. Further, there are
additional optimizations that can be made when ease.js recognizes that
certain visibility layers are unneeded, allowing it to create more
lightweight classes.

Performance enhancements will also introduce the ability to generate a
``compiled'' class, which will generate a prototype that can be immediately
run without the overhead of processing keywords, etc. This will also have
the benefit of generating code that can be understood by static analysis
tools and, consequently, optimizers.

All in good time.
2014-04-17 00:11:27 -04:00
doc [copyright] Copyright assignment to the FSF 2014-04-09 19:05:07 -04:00
lib Removed unnecessary try/catch from isInstanceOf 2014-04-09 20:01:33 -04:00
test Can now build multiple performance logs 2014-04-09 20:01:33 -04:00
tools Began performance test case result HTML generation 2014-04-09 20:01:33 -04:00
.gitignore Can now build multiple performance logs 2014-04-09 20:01:33 -04:00
.mailmap Added .mailmap 2014-03-16 00:03:02 -04:00
COPYING Split COPYING into two separate files: COPYING and COPYING.LGPL 2012-06-13 22:27:48 -04:00
Makefile.am Began performance test case result HTML generation 2014-04-09 20:01:33 -04:00
README [copyright] Copyright assignment to the FSF 2014-04-09 19:05:07 -04:00
README.hacking Added beginning of README.hacking 2011-09-02 22:24:16 -04:00
README.md Added GNU to ease.js license notice in README.md 2014-04-09 19:10:20 -04:00
README.todo Removed unit test refactoring mention from README.todo 2014-01-20 22:14:42 -05:00
README.traits README.traits containing remaining TODOs 2014-03-15 22:19:07 -04:00
configure.ac Generic performance test output 2014-04-09 20:01:33 -04:00
index.js [copyright] Copyright assignment to the FSF 2014-04-09 19:05:07 -04:00
package.json.in Updated homepage and git repo URLs 2014-03-20 23:42:53 -04:00

README.md

GNU ease.js

GNU ease.js is a classical object-oriented framework for Javascript, intended to eliminate boilerplate code and "ease" the transition into JavaScript from other object-oriented languages.

Current support includes:

  • Simple and intuitive class definitions
  • Classical inheritance
  • Abstract classes and methods
  • Interfaces
  • Traits as mixins
  • Visibility (public, protected, and private members)
  • Static and constant members

Documentation

Comprehensive documentation and examples are available on the GNU ease.js website and in its manual.

Bug Reports / Feature Requests

Please direct bug reports and feature requests to bug-easejs@gnu.org or the project page on Savannah.

Why Classical OOP in JavaScript?

GNU ease.js was created (historically) for a number of reasons:

  • To "ease" object-oriented developers into JavaScript by providing a familiar environment.
  • To provide the maintenance and development benefits of classical OOP.
  • To provide features not included in the language, such as proper encapsulation through private/protected members, interfaces, traits, intuitive inheritance, and other conveniences.
  • To encapsulate the hacks commonly used to perform the above tasks.

Many JS purists believe that classical object-oriented programming should be left out of JavaScript and that one should stick strictly to prototypal development. While the two are related (they are both object-oriented), they can be applied to different problem domains in order to achieve results that are more natural or intuitive to developers; GNU ease.js works seamlessly with existing prototypes, allowing the developer to choose whether or not they want to use "classes".

License

GNU ease.js is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

N.B.: Versions prior to 0.2.0 were released under the LGPLv3+. Upon becoming a GNU project, it was relicensed under the GPLv3+ to help the FSF stand strong in its fight against proprietary JavaScript. For more information, please see the NEWS file (which can be built with make NEWS).