Java是個扶不起的阿斗,sun在贏了微軟的官司以后似乎在忙于分紅,相對于紅紅火火的.net世界,sun幾乎在坐以待斃,浪費無數開源愛好者的感情。
matrix展望2006的java,似乎只能看到開源愛好者的一腔熱血。

未來的java應該是什么樣子呢?下面是我期望: 

    /**
     * 1. 空指針抑制<br>
     * JVM支持的Runtime空指針抑制,根據方法的[Nullable]標記<br>
     * java里面有太多的NullPointer異常,經常需要復雜的檢測,浪費沒必要的代碼。
     
*/

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

    
    
/**
     * 2. 動態屬性支持<br>
     * 類似范型的實現,由編譯器支持即可。<br>
     * 
@param a: A implements DynamicBean,沒有定義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. 動態方法支持<br>
     * 由編譯器支持即可。<br>
     * 
@param a: A implements DynamicInvoke,沒有定義b()方法
     
*/

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

    
    
/**
     * 4. 快速反射<br>
     * 由編譯器支持即可。便于編譯期間錯誤檢查<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的索引器,語法簡潔。編譯期間支持即可<br>
     * 
@param a: A 實現了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內置支持AOP標記<br>
     * Trace是用戶自行定制的Attribute, Trace.Interceptor指定攔截器 
     
*/

    [Trace]
    [Role(
"admin")][Transactional]
    
public void jvmAOP(A a){
        
    }

    
    
/**
     * 7. 條件編譯<br>
     * 編譯器支持Condition標記,可以用于所有元素,甚至package<br>
     * 用于測試期間、調試期間編譯出不同的結果
     
*/

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

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

    
    
/**
     * 9. 內置對象數據庫,支持類似記憶的遺忘模式以節省空間
     
*/

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

    
    
/**
     * 10. 平臺支持<br>
     * 編寫windows的服務,調用windows的注冊表/log/ad/schedule/菜單、工具條、桌面。。。
     
*/

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



希望sun早日把java捐贈到開源社區,象eclipse一樣煥發青春。