Java是個(gè)扶不起的阿斗,sun在贏了微軟的官司以后似乎在忙于分紅,相對(duì)于紅紅火火的.net世界,sun幾乎在坐以待斃,浪費(fèi)無(wú)數(shù)開(kāi)源愛(ài)好者的感情。
matrix展望2006的java,似乎只能看到開(kāi)源愛(ài)好者的一腔熱血。
未來(lái)的java應(yīng)該是什么樣子呢?下面是我期望:

/** *//**
* 1. 空指針抑制<br>
* JVM支持的Runtime空指針抑制,根據(jù)方法的[Nullable]標(biāo)記<br>
* java里面有太多的NullPointer異常,經(jīng)常需要復(fù)雜的檢測(cè),浪費(fèi)沒(méi)必要的代碼。
*/
[Nullable]

public void testNullable(A a)
{
return a.b().c.d(); //如果用if else寫需要多少代碼?
}

/** *//**
* 2. 動(dòng)態(tài)屬性支持<br>
* 類似范型的實(shí)現(xiàn),由編譯器支持即可。<br>
* @param a: A implements DynamicBean,沒(méi)有定義c屬性
*/

public void dynamicProperty(A a)
{
assert a != null;
a.b.c = "abc"; //等效于a.getProperty("b").setProperty("c","abc");
ResultSet rs; //for database:
String name = rs.name; //if ResultSet defined getStringProperty(): String name = rs.getStringProperty("a");
Element order; //for xml, element auto-created in getProperty() method.
order.address.phone = "1234"; //order.getProperty("address").setProperty("phone","1234");
}

/** *//**
* 3. 動(dòng)態(tài)方法支持<br>
* 由編譯器支持即可。<br>
* @param a: A implements DynamicInvoke,沒(méi)有定義b()方法
*/

public void dynamicMethod(A a)
{
a.b(1,"x"); //編譯為a.invoke("b",new Object[]{1,"x"]);
}

/** *//**
* 4. 快速反射<br>
* 由編譯器支持即可。便于編譯期間錯(cuò)誤檢查<br>
* @param a: A 定義了b(),c變量
*/

public void fastReflection(A a)
{
Annotation[] mas = a.b().class.getAnnotations(); //a.getClass().getMethod("b").getAnnotations();
Annotation[] mas = a.c.class.getAnnotations(); // a.getClass().getField("c").getAnnotations();
}

/** *//**
* 5. 索引器<br>
* 類似.net的索引器,語(yǔ)法簡(jiǎn)潔。編譯期間支持即可<br>
* @param a: A 實(shí)現(xiàn)了List接口,Map接口
*/

public void indexVisit(A a)
{
Element order ; //xml element
Element first = order[0]; //order.get(0);
Element address = order["address"]; //order.get("address")
}


/** *//**
* 6. AOP<br>
* JVM內(nèi)置支持AOP標(biāo)記<br>
* Trace是用戶自行定制的Attribute, Trace.Interceptor指定攔截器
*/
[Trace]
[Role("admin")][Transactional]

public void jvmAOP(A a)
{
}

/** *//**
* 7. 條件編譯<br>
* 編譯器支持Condition標(biāo)記,可以用于所有元素,甚至package<br>
* 用于測(cè)試期間、調(diào)試期間編譯出不同的結(jié)果
*/

/** *//**
* 8. Schema,DataBase編譯支持<br>
*/

public static void schemaSupport()
{
[Schema(url="file://test.xsd")]
Document doc;
Element c = doc.a.b.c; //根據(jù)schema編譯期間檢查
}

/** *//**
* 9. 內(nèi)置對(duì)象數(shù)據(jù)庫(kù),支持類似記憶的遺忘模式以節(jié)省空間
*/

public void databaseSupport()
{
Database.default.find("
");
}

/** *//**
* 10. 平臺(tái)支持<br>
* 編寫windows的服務(wù),調(diào)用windows的注冊(cè)表/log/ad/schedule/菜單、工具條、桌面。。。
*/

public void platformSupport()
{
PlatformRegistry.getString("
.");
}

希望sun早日把java捐贈(zèng)到開(kāi)源社區(qū),象eclipse一樣煥發(fā)青春。