`
yiminghe
  • 浏览: 1465418 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

VJO 简要学习笔记

    博客分类:
  • java
阅读更多

VJO 简单来说是一套ebay (已经在java这条不归路走火入魔了) javascript 基础设施,通过一套javascript基础类库以及规定注释(自定义和JsDoc),在语法语义上实现了java编程模式的javascript程序 。

可以从java的角度看待javascript,也可以从javascript的角度看待java,互相增强。


java 中所有对象都是Object的实例,用VJO写的javascript中所有对象都是VjO Object的实例。


包括Object的一般方法:

hashcode()

对象的唯一表示   

equals(object)
   
以值来判断对等

getClass()

该对象所属类别

toString()
   
class + class name ,例如 class x.y


模拟java语法例子:

 

package samples.simplejava.map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Foo {
	public static Map<String, String> m_testMap = null;
	
	public static List<String> m_testList = null;
	
	public Foo(){
		m_testMap = new HashMap<String, String>();
		m_testMap.put("Key1", "value1");
		m_testMap.put("Key2", "value2");
		
		m_testList = new ArrayList<String>();
		m_testList.add("listValue1");
		m_testList.add("listValue2");
		
	}
	public static void main(String[] args) {
		new Foo();
		bar();		
	}
	public static void bar(){
		Iterator it = m_testMap.keySet().iterator();
		System.out.println("Looping the Map in JavaScript");
		while(it.hasNext()){
			String str = (String)it.next();
			System.out.println("Key : " + str +" & value : "+ m_testMap.get(str));
		}
		System.out.println("Looping the List in JavaScript");
		for(int i=0;i<m_testList.size();i++){
			System.out.println("index : " + i + "& value : "+ m_testList.get(i));
		}
		
	}
}
 

 

 

vjo.ctype('samples.simplejava.map.Foo') //< public
.needs(['vjo.java.util.Map','vjo.java.util.List',
    'vjo.java.util.HashMap','vjo.java.util.ArrayList',
    'vjo.java.util.Iterator','vjo.java.lang.System'])
.props({
    m_testMap:null, //< public Map<String,String> m_testMap
    m_testList:null, //< public List<String> m_testList
    //> public void main(String[] args)
    main:function(args){
        new this();
        this.bar();
    },
    //> public void bar()
    bar:function(){
        var it=this.m_testMap.keySet().iterator();
        this.vj$.System.out.println("Looping the Map in JavaScript");
        while(it.hasNext()){
            var str=it.next();
            this.vj$.System.out.println("Key : "+str+" & value : "+this.m_testMap.get(str));
        }
        this.vj$.System.out.println("Looping the List in JavaScript");
        for (var i=0;i<this.m_testList.size();i++){
            this.vj$.System.out.println("index : "+i+"& value : "+this.m_testList.get(i));
        }
    }
})
.protos({
    //> public constructs()
    constructs:function(){
        this.vj$.Foo.m_testMap=new this.vj$.HashMap();
        this.vj$.Foo.m_testMap.put("Key1","value1");
        this.vj$.Foo.m_testMap.put("Key2","value2");
        this.vj$.Foo.m_testList=new this.vj$.ArrayList();
        this.vj$.Foo.m_testList.add("listValue1");
        this.vj$.Foo.m_testList.add("listValue2");
    }
})
.endType();
 

 

 

 

 

 

 

 

类与命名空间管理:

 

 

vjo.ctype('samples.Account')
.props({
RATE: 2.45
})
.protos({
amount: 0,
balance: 0,
constructs: function(){}
})
.endType();


//props : 类属性

//protos: 实例属性

 

 

导入类的命名空间:

 

import vjo.utils.X

 

vjo.needs("vjo.utils.X")
 

 

 

以后代码可以用 this.$vj.X 访问 X 类

 

定义接口:

 

interface Y{}

 

 

vjo.itype("<namespace>.Y")
 

 

 

定义枚举:

 

enum E{}

 

vjo.etype("<namespace>.E") 

 

 

定义抽象类:(利用注释加以说明)

 

abstract class Z{}
 
//> abstract

vjo.ctype("<namespace>.Z")
 

 

定义内部类

 

class X{}
 
X : vjo.ctype()

 

 


定义构造函数

 

D(){}
 
constructs: function(){}
 

重载函数(利用注释加以说明)

 

D(int arg){}

D(String arg){}
 

 

//>public void constructs(int arg)

//>public void constructs(String arg)

constructs:function(arg){}
 

 

调用父类构造函数

 

super()

 

this.base()
 

调用父类方法

super.doIt()
 
this.base.doIt()

 类继承

 

class X extends Y

 

vjo.ctype("<namespace>.X")

.inherits("<namespace>.Y")

 实现接口(仅表示语义,无实际运行意义)

 

class X implements Y

 

vjo.ctype("<namespace>.X")

.satisfies("<namespace>.Y")
 

 

实现实例方法

 

void setName(String name)

 

.protos({

    setName: function(String name)

})
 


实现静态方法

 

static void setName(String name) 

 

.props({

    setName: function(String name)

})
 

 
静态初始代码

 

static{...}
 
.inits(function(){...}

 

 

枚举常量:

 

public enum Days {

    MON,TUE,WED,THU,FRI,SAT,SUN

}
 

 

vjo.etype('<namespace>.Days')

.values('MON,TUE,WED,THU,FRI,SAT,SUN')
MON instanceof Days == true
 

 

参数类型:(注释说明)

 

void setName(String name){}

 

//> void setName(String name)

setName : function(name){}
 


方法访问控制:(注释说明)

 

public void setName(String name){}
 
//>public void setName(String name)

setName : function(name){}

 

返回类型:(注释说明)

 

public X getIt(){}

 

//> public X getIt()

getIt : function(){}
 

 

 

参数个数变长:(注释说明)

 

public X getIt(String... x)
 
//>public X getIt(String... x)

getIt:function(x){}
 

局部变量类型:(注释说明)

 

int x = 10;

String s = "hello";

final boolean ok = false;
 

 

 

var x = 10; //< int

var s = 'hello'; //< String

var ok = false; //< final boolean
 

 

 

 

 

优点: 实现了我初学javascript时梦想的java javascript大统一

缺点: 熟练javascript后再这样发觉不能随心所欲写javascript很不爽

 

分享到:
评论

相关推荐

    施耐德Vjo6.2 HMI编辑软件以及Vjo1.1Basic HMI编辑软件百度网盘下载安装包

    施耐德Vjo6.2 HMI编辑软件以及Vjo1.1Basic HMI编辑软件百度网盘下载安装包适用于IPC 以及3520 等多型号触摸屏

    vjo播放插件

    VJO播放插件是一种专为增强视频播放体验而设计的软件组件,主要功能是扩展系统或浏览器的多媒体处理能力,使用户能够流畅地播放特定格式的视频内容。在信息技术领域,这种类型的插件通常用于填补操作系统或应用程序...

    VJo-Community-Plugins-开源

    【Visualjockey (VJo) 社区插件开源项目详解】 Visualjockey(VJo)是一款专业的视频混音和视觉艺术创作软件,被广泛应用于DJ、音乐制作人和视觉艺术家之中。它允许用户实时操控视频流,创建出令人震撼的视听效果。...

    电子-往期直播课列表更新.zip

    这些直播课程旨在帮助学习者逐步掌握STM32的开发技能,从理论到实践,从基础到高级,全方位提升对嵌入式系统的理解和应用能力。更新的课程列表可能会包含新加入的课程主题、改进的教学方法或者最新的技术趋势,确保...

    bubblescope:用潜望镜的心脏为泡泡机供电

    { " device_name " : " " , " access_token " : " "}安装git clone git@github.com:vjo/bubblescope.git bubblescope && cd bubblescope 节点cd server/node && npm install bubblescope使用peristream项目,该项目...

    动画LED沙子 创建互动的模拟沙粒!-电路方案

    趣味互动的模拟沙粒概述: 这些LED与运动相互作用,看起来像受到重力的影响。 一个Adafruit LED矩阵将LED显示为沙粒的小颗粒,通过采用Adafruit羽毛对加速计进行采样来...下载地址:https://a360.co/2AD3VJo 组件安装:

    AVPro Video - Core Edition 2.1.0.zip

    AVPro Video是Unity引擎中的一款强大视频处理插件,核心在于提供高效、高质量的视频播放功能,支持多种视频格式,并且具有丰富的视频处理和优化工具。"Core Edition 2.1.0" 是该插件的一个特定版本,意味着它包含了...

    win_SDK_10.0.10586.zip

    《Windows SDK 10.0.10586:深入了解开发工具与API》 Windows SDK(Software Development Kit)是微软提供的一套用于开发Windows应用程序的综合工具集,它包含了编程人员所需的各种文档、库、头文件、示例代码以及...

Global site tag (gtag.js) - Google Analytics