Fork me on GitHub
Build Status

Welcome to the official jOOPL Web site!

jOOPL stands for JavaScript Object-Oriented Programming Library.

Write powerful and elegant JavaScript code on top of class-based, feature-rich object-oriented programming paradigm which works both on browsers and JavaScript runtimes like NodeJS!

If you are new on jOOPL, there is a slide-show presentation made to get you into it! (press to start it!)

Discover the cutting-edge JavaScript code analyzer and the built-in asynchronous dependency loading!

Now jOOPL provides an out-of-the-box and revolutionary tool to analyze your code and automatically create a configuration file to load dependent JavaScript code files in the client-side. Learn about jOOPL Analyzer and Asynchronous Dependency Loading by following these direct links:

Simple inheritance sample!

Get started!

First of all, take a look at documentation about how to work with classes and object-oriented programming and namespacing how-to!

Furthermore, if you are looking for samples, now jOOPL has a test suite developed using the great QUnit testing framework made by the jQuery team. Just see tests' source code and check each test case: it will give you a big picture about jOOPL capabilities!

These are direct links to tests' source code:

Ok, wait. Why jOOPL? Why object-oriented programming?

Let's create true re-usable and extensible frameworks on top of plain JavaScript using a no-brainer library which covers class-based object-oriented programming enforcing best software coding practices. Here is a brief summary of object-oriented programming capabilities found in jOOPL:
  • Namespaces
  • Classes
  • Inheritance
  • Polymorphism
  • Encapsulation
  • ECMA-Script 5.x and 6 properties
  • Exclusive, easy-to-use and powerful custom events!
  • Enumerations
  • Declarative class metadata using attributes

And it is a tiny JavaScript library when minimized (~10KB)!!

I see, I see (TL;DR). And what about a hello world sample? ;-)

The next code listing creates a namespace called samples. A class ClassA in the namespace (the this keyword represents the registered namespace) implements a method to say "hello world!" and, finally, an instance of the whole class is created in order to call the method to say hello world!:

$namespace.using("samples", function(samples) {
    samples.declareClass("A", {
        members: {
            helloWorld: function() {
                alert("hello world!");
            }
        }
    });

    var instanceOfClassA = new samples.ClassA();
    instanceOfClassA.helloWorld();
});
            

Licensing

jOOPL is a completely open sourced, free-of-charge JavaScript library distributed under the Apache License 2.0.

Who is behind this project?

This project is actively developed by Matias Fidemraizer (LinkedIn profile here)

I want to contribute, give feedback...

Great! You're welcome.

The main channel for discussions and ask questions is the jOOPL's Google Group / Mailing list (click here to go there). Feel free to post any question, suggestion or debate about any feature or improvement.

Also, you can fill an issue in the jOOPL's GitHub repository (click here to go there).

If you're looking for a direct contact with the project leader, please send a message to my profile on LinkedIn (Matias Fidemraizer's LinkedIn profile link) and we can start talking there.