Giter Site home page Giter Site logo

cappuccinovm's Introduction

CappuccinoVMはJavaScriptによって実装されたJavaVirtualMachineです。プラグインに頼らずにJavaScriptだけで全部実装しているのがJavaアプレットとの違いです。最近のバージョンのChromeかFirefoxかSafariなら動くと思います(Chromeだと速いです)。

使い方:
とりあえずHelloWorldしてみましょう。

//HeloWorld.java
class HelloWorld
{
	public static void main(Strings args[])
	{
		System.out.println("Hello World!");
	}
}

これをコンパイルしてHelloWorld.class作ります。

$javac HelloWorld.java

HelloWorld.classをcappuccino_vm.jsといっしょにWebサーバーで公開されているディレクトリに置きます。
そしてそのディレクトリで以下のようなhtmlを作ります。

<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>CappuccinoVM test</title>
		<script type="text/javascript" src="cappuccino_vm.js"></script>
		<script type="text/javascript">
		function VMStart()
		{
			CappuccinoVM.startMain('HelloWorld');
		}
		</script>
	</head>
	<body onload="VMStart()">
	<body>
</html>

このページをWebブラウザで開くと…何も表示されません。
とりあえず今の実装ではconsole.logで出力しているので、ブラウザのコンソールを確認してください(Chromeではツール->JavaScriptコンソール)。

仕組み:
CappuccinoVM.startMain('HelloWorld');
これが実行されるとCappuccinoVMはHelloWorld.classをサーバーからダウンロードしてきます。そしてクラスファイルを解析し、JavaバイトコードをJavaScritpに変換して実行します。いわゆるJITコンパイラです。

現在の進捗:
JavaVMの命令の半分程度を実装しています。簡単な処理を行って結果をSystem.out.printlnすることはできます。

今後実装したいと思っているもの:
マルチスレッド
例外処理
Swing
WebStorageを使った仮想ファイルシステムのようなもの(dropboxとかのクラウドストレージも使えるか?)

cappuccinovm's People

Contributors

hogeki avatar

Watchers

James Cloos avatar duhuasong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.