maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Development (https://talk.maemo.org/forumdisplay.php?f=13)
-   -   Ejscript web application framework for Maemo and Mer (https://talk.maemo.org/showthread.php?t=29434)

b-man 2009-06-08 22:01

Ejscript web application framework for Maemo and Mer
 
This is a raw port of the Ejscript javascript application framework. This is an effort to port a powerful yet resource friendly javascript API to both maemo and mer. Ejscript is designed to function from inside OR outside of the browser. (It can function as a fully capable system-wide language (like python, bash, and perl), as a web language, or both) Ejscript is an extended version of javascript that fully supports and complies with the standardized version of JavaScript known as ECMAScript Edition 3 (ECMA-262-3).

Features:

* An environment for high performance web applications
* Fully capable of being a stand-alone programing language like python.
* Integrated SQLite database
* Object Relational Mapper (ORM)
* Ajax view controls
* Full support for jQuery
* A direct-threaded Virtual Machine



Core Features:

* Web Framework - Provides a large amount of Ajax functions when working on browser based applications

* High Performance Virtual Machine - Provides a resource friendly direct-threaded Virtual Machine for running byte compiled javascript code

* Compact Byte Code - for fast execution

* Enhanced Core Language - Ejscript enhances the ECMAScript core with powerful a set of features including: classes and modules for scalable programming, conditional compilation and an enhanced-language mode to detect common JavaScript language issues.

* Extended Language - Provides classes for Events, Timers, Files, Paths, Streams, Sockets and HTTP. There are also significant upgrades for the core system classes: Array, Object and String.

* Useful tools - Includes a fast, optimizing compiler, symbolic assembler listing generator and documentation generation tool.


More documentation on usage can be found here:
http://b-man.psykosis.net/projects/e...documentation/

Source, development, and binary deb packages are available here.

NOTICE: if you are going to build this from source you must use this patch, this disables the '-mcpu' flag from getting used in make.gcc since gcc for armv6l doesn't support this option.


Examples:


Creating a program to use with the interpreter (ejs)
Code:

#!/usr/local/bin/ejs

/* Hello.es */
/* prints Hello World and displays the systems hostname */

testrun();
function testrun(){
        print("Hello, World!!\n");
        print("System Hostname:\n");
        System.run("/bin/hostname");
}
App.exit(0)


Creating and building a program to use with the Virtual Machine (ejsvm)


Code:

/* Hello.es */
module Hello {
        var x = "hello, world!!"
}
use module Test
print(x)

or

Code:

/* Hello.es */
module Hello {
        print("Hello, World!!");
        App.exit(0);
}


And then compile and run the program with the following:
Code:

ejsc Hello.es

ejsvm Hello.mod

Real-world example:

this program would take test.c and compile it using gcc, strip it, and then run the resulting program test:
Code:

/* Build.es */

module Build {
        compile();
        function compile() {
                sys_make();
        }
                function sys_make() {
                        print("Compiling test.c...\n");
                        var compile = System.run("/usr/bin/gcc test.c -o test");
                        print("Done!\n\n");
                        sys_strip();
                }
                        function sys_strip(){
                                print("striping file...\n\n")
                                var strip_file = System.run("/usr/bin/strip test");
                                sys_info();
                        }
                                function sys_info(){
                                        var info = System.run("/usr/bin/file test");
                                        print(info+"");
                                        sys_run();               
                                        function sys_run(){
                                        }
                                                print("\nTesting program...\n\n");
                                                        var test = System.run("./test");
                                                        print(test+"");
                                                        print("\n");
                                                }
        App.exit(0);
}



Using Ejscript with a browser:

Assuming your app name is going to be web, run the following as root (i'm using my /root directory)

Code:

cd ~/

ejsweb -v generate app web

and to start the localised server run the following:
Code:

cd web

ejsweb run

and open Microb, or any other browser and go to http://localhost:4000/

You should see the following:

http://b-man.psykosis.net/projects/e...screenshot.png

And you're done :)

mob590 2009-06-10 06:45

Re: Ejscript web application framework for Maemo and Mer
 
Great work, I'm the project lead for Ejscript and we'd gladly accept any patches so you can use the software unmodified.

Michael O'Brien
mob@embedthis.com

Architengi 2009-06-10 09:19

Re: Ejscript web application framework for Maemo and Mer
 
Quote:

Originally Posted by b-man (Post 294762)
This is a raw port of the Ejscript javascript application framework to both maemo and mer.

Features:

* An environment for high performance web applications
* Fully capable of being a stand-alone programing language like python.
* Integrated SQLite database
* Object Relational Mapper (ORM)
* Ajax view controls
* Full support for jQuery
* A direct-threaded Virtual Machine


* Extended Language - Provides classes for Events, Timers, Files, Paths, Streams, Sockets and HTTP. There are also significant upgrades for the core system classes: Array, Object and String.

More documentation on usage can be found here:
http://b-man.psykosis.net/projects/e...documentation/

Source, development, and binary deb packages are available here.

Super nice.

This looks like a powerful language with rapid development.

Does it support graphics (drawing, bitmap manipulation, video)?

For user interface stand alone, can you give an example of a window with a combo-box with 3 items and 2 buttons ok and cancel?

Does it have a debugger?

Thank you for your hard work !

b-man 2009-06-12 18:01

Re: Ejscript web application framework for Maemo and Mer
 
Quote:

Originally Posted by Architengi (Post 295202)
Super nice.

This looks like a powerful language with rapid development.

Does it support graphics (drawing, bitmap manipulation, video)?

For user interface stand alone, can you give an example of a window with a combo-box with 3 items and 2 buttons ok and cancel?

Does it have a debugger?

Thank you for your hard work !

1) yes - it should, allthough i haven't confermed this yet

2) untill i can find a way to make or port an html rendering canvas (like luna-webkit - what the Palm Pre's WebOS uses to display it's user interface) that can run in hildon, you won't be able to create a user interface outside of the browser directly from the javascript itself :(

allthough you can run it from within your system to use d-bus, zenity, or gtkwindow to create an interface:
Code:

module Test {
            test_window();
            function test_window();
                            var testwin = System.run("/usr/bin/dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"Opening Window..."");
                            print(testwin+"");
                            sleep(100);            /* sleep 100 miliseconds */
                            System.run("gxmessage -center -alignbuttons center -buttons "close window":1 -geometry 300x50 -title "question" -wrap "this window was launched using Ejscript"");
                            App.exit(0);
            }
}


3) yes, i believe that it's built into the interpreter and compiler. ;)


All times are GMT. The time now is 09:25.

vBulletin® Version 3.8.8