Reply
Thread Tools
b-man's Avatar
Posts: 549 | Thanked: 502 times | Joined on Feb 2008 @ Bowling Green Ohio (united states)
#1
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:



And you're done
__________________
I'm an advanced user and a bit of a modder.
----------------------------------------------
I am involved with Mer, Deblet, and NITdroid.
My ports/creations/hacks: GNOME (for Deblet), Cdeb2», Ubuntu, playable flash games in the "Get Started" app, DBS, ect...


enhanced fedora port has been canceled in favor of NITDebian (TBA)
 

The Following 4 Users Say Thank You to b-man For This Useful Post:
Posts: 1 | Thanked: 3 times | Joined on Jun 2009
#2
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
 

The Following 3 Users Say Thank You to mob590 For This Useful Post:
Posts: 362 | Thanked: 109 times | Joined on May 2009
#3
Originally Posted by b-man View Post
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's Avatar
Posts: 549 | Thanked: 502 times | Joined on Feb 2008 @ Bowling Green Ohio (united states)
#4
Originally Posted by Architengi View Post
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.
__________________
I'm an advanced user and a bit of a modder.
----------------------------------------------
I am involved with Mer, Deblet, and NITdroid.
My ports/creations/hacks: GNOME (for Deblet), Cdeb2», Ubuntu, playable flash games in the "Get Started" app, DBS, ect...


enhanced fedora port has been canceled in favor of NITDebian (TBA)
 
Reply

Tags
javascript


 
Forum Jump


All times are GMT. The time now is 06:46.