JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
作者 該來聊聊Java SE 7了..
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-13 20:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
今年看來Java SE 7就會出來了, 雖然說業界可能會比較晚全盤導入
但是先來看看有什麼吧, 看能不能增加採用的機會

首先可以到
http://jdk7.java.net/preview/ 下載新版的JDK

另外建議可以到
http://netbeans.org/downloads/index.html 下載NetBeans 7.0
已經支援新的語法

在新增Java Application專案後, 專案按右鍵後便可以選Source下的Source/Binary format為JDK 7
這樣有些提示就會出現了.

那就先看看Project Coin

支援String的switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public final void testSwitch(String test)
{
    switch (test) {
        case "one":
            System.out.println("1");
            break;
        case "two":
            System.out.println("2");
            break;
        default:
            System.out.println("!?!?!");
            break;
        }
}


如果傳null會NPE就是了, 另外這個語法是靠compiler去比對字串的hashcode
有興趣的可以反編譯看一下

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-13 20:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這邊有之前提到的

http://www.javaworld.com.tw/jute/post/view?bid=5&id=287292
結果Lambda搞這麼久還是得等下次..

補上另一個改進More Precise Rethrow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class FooException extends Exception {}
 
class BarException extends Exception {}
 
void test(String name) throws BarException, FooException {
    try {
        if (...) {
            throw new FooException();
        }
        else if (...) {
            throw new BarException();
        }
    } catch (Exception ex) {
        Log.d("", "");
        throw ex;
    }
}


還有try-with-resources
1
2
3
4
5
6
try (InputStream inputStream = new FileInputStream(source);
    OutputStream outputStream = new FileOutputStream(target)) {
    //...
} catch (IOException e) {
    //...
}


只要interface有AutoCloseable都可以
另外在try(...)內的變數無法重新assign其他東西就是了, 因為他會關不到新給的實體
例如上面的inputStream 和 outputStream

這邊可以看看哪些類別實作了AutoCloseable
http://download.java.net/jdk7/docs/api/java/lang/AutoCloseable.html

看來project coin都差不多有了
接下來貼點其它的改進XD

koji


koji edited on 2011-05-13 21:35
reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
jfire





發文: 128
積分: 0
於 2011-05-14 03:07 user profilesend a private message to usersend email to jfirereply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
AutoCloseable耶!以後不用在寫落落長的try-catch-finally關閉檔案了

Strings in switch既然是用hashCode判斷,那是不是所有Object都可以用switch?


reply to postreply to post
作者 Re:該來聊聊Java SE 7了.. [Re:jfire]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-14 09:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
jfire wrote:
AutoCloseable耶!以後不用在寫落落長的try-catch-finally關閉檔案了

Strings in switch既然是用hashCode判斷,那是不是所有Object都可以用switch?


沒辦法,
compiler只幫String做..

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
beneo





發文: 252
積分: 0
於 2011-05-14 09:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
用 groovy 好了, jdk 7+

reply to postreply to post

在Javaworld.tw裡面,我很崇拜D和M,他們很熱心,我也很喜歡HK2K,雖然看起來他很裝B......
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-14 13:56 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
另一個

JDBC 4.1

比較重要好像就兩個

1. Connection, ResultSet和Statement有AutoCloseable
就跟上面說的一樣, 之後寫try, catch, finally 和close比較方便一點, code也短一點

2. 提供RowSetFactory和RowSetProvider建立RowSet
1
2
3
RowSetFactory myRowSetFactory = RowSetProvider.newFactory();
JdbcRowSet jdbcRs = myRowSetFactory.createJdbcRowSet();
jdbcRs.setUrl("jdbc:myDriver:myAttribute");

跟以前比好處在不用把JdbcRowSet 的實作類別寫出來(ex: com.sun.rowset.JdbcRowSetImpl, weblogic.jdbc.rowset.JdbcRowSetImpl ), 有多個實作時只需用不同factoryClassName就可以
http://download.oracle.com/javase/7/docs/api/javax/sql/rowset/RowSetProvider.html#newFactory(java.lang.String, java.lang.ClassLoader)

koji

--
好久沒碰RowSet了Tongue


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
mylee





發文: 764
積分: 1
於 2011-05-14 14:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
一個比較實際的風險,JDK 7(含以後版本)的授權規定與以往是否相同?
畢竟神諭公司不是太陽公司,公司格調並沒有比 M$ 好到哪裏。


reply to postreply to post
作者 Re:該來聊聊Java SE 7了.. [Re:mylee]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-14 15:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
mylee wrote:
一個比較實際的風險,JDK 7(含以後版本)的授權規定與以往是否相同?
畢竟神諭公司不是太陽公司,公司格調並沒有比 M$ 好到哪裏。


我是還沒特別去研究, 但是線上還沒看到有人說這個問題
所以看起來還可以?...我都想說真會出事的話應該可以看到新聞了....
但是有機會應該來查一查Tongue

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-14 18:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
剛剛看到別人說如果string hashcode一樣怎麼辦
之前寫太簡短了, 以下使用decompiler反編譯

例如
righto
buzzards的hashcode的結果相同
反編譯後會看到如下結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    String str = test; int i = -1; 
    switch (str.hashCode()) { 
    case -931102253:
        if (str.equals("buzzards")) { i = 1; } 
        else { 
            if (!str.equals("righto")) 
                break; 
            i = 0; 
        }  
    }
    switch (i) {
    case 0:
      System.out.println("1");
      break;
    case 1:
      System.out.println("2");
      break;
    default:
      System.out.println("!?!?!");
    }


所以是先hashcode在做equals比對, 所以不用擔心撞到

koji


koji edited on 2011-05-14 18:52
reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-15 18:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
JSR 166y

新的並行處理框架Fork/Join

當遇到需要divide-and-conquer的工作時, 可以透過提供的fork/join框架簡單完成程式碼

看一下主要的類別關係


ForkJoinTask是像thread但比他輕量, 主要是因為他會透過ForkJoinPool使用少量的thread去完成工作.
利用此框架時我們通常會繼承 java.util.concurrent.RecursiveTask<T>來做

可以看一下javadoc的範例
1
2
3
4
5
6
7
8
9
10
11
12
13
class Fibonacci extends RecursiveTask<Integer> {
   final int n;
   Fibonacci(int n) { this.n = n; }
   public Integer compute() {
     if (n <= 1)
        return n;
     Fibonacci f1 = new Fibonacci(n - 1);
     f1.fork();
     Fibonacci f2 = new Fibonacci(n - 2);
     return f2.compute() + f1.join();
   }
 }

main內
1
2
3
4
Fibonacci fibonacci = new Fibonacci(15);
ForkJoinPool mainPool = new ForkJoinPool();
Integer sum = mainPool.invoke(fibonacci);
 


主要就是把f1丟到排程
ForkJoinPool底層會把丟進排程的工作分配給內部的thread去跑
如何分配的話可以看一下work-stealing的機制
然後最後在join時取得結果

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
mylee





發文: 764
積分: 1
於 2011-05-15 19:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
koji wrote:
ForkJoinTask是像thread但比他輕量


這個命名是要挑戰 *nix 工程師對 fork 這個單字的重量感嗎?XD


reply to postreply to post
作者 Re:該來聊聊Java SE 7了..[NIO2] [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-25 20:12 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
另一個比較大的部分 JSR203:NIO2

More New I/O APIs for the java Platform

主要是檔案操作相關的API有新增很多

package有java.nio.file, java.nio.file.attribute, java.nio.file.spi

例如效能提升,支援Symbolic link, 有直接爬完目錄結構的API, 取得檔案變更事件, 把zip當做檔案系統存取之類的...etc

以下是取得檔案系統事件的sample

只是依照javadoc說法, 得稍微注意一下依照系統支援程度會有不同
http://openjdk.java.net/projects/nio/javadoc/index.html?java/nio/file/FileSystem.html

就靠FileSystems取得FileSystem然後產生WatchService
1
2
3
4
5
6
7
8
9
10
11
12
13
Path dir = Paths.get("C:\\");
        WatchService watcher = FileSystems.getDefault().newWatchService();
        dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
 
        for (;;) {
            WatchKey watchKey = watcher.take();
            for (WatchEvent<?> event: watchKey.pollEvents()) {
                if (event.kind() == OVERFLOW) continue;
                System.out.format("%s: %s\n", event.kind().name(), event.context().toString());
            }
            watchKey.reset();
        }
 


然後只要在C:\\下改檔案都會看到事件觸發

koji


koji edited on 2011-05-25 20:28
reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了..[NIO2] [Re:koji]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2011-05-25 21:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
另一個覺得比較方便的NIO2 API
透過Files.walkFileTree和FileVisitor可以很快的寫一個爬檔案和目錄的範例

1
2
3
4
5
6
7
8
9
10
11
FileVisitor<Path> visitor= new SimpleFileVisitor<Path>() { 
  @Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attribs) {
       System.out.println("file :"+file);
       return FileVisitResult.CONTINUE;
    }
};
 
Path dir = Paths.get("C:\\test");
Files.walkFileTree(dir , visitor);
 


koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:該來聊聊Java SE 7了.. [Re:mylee]
jamestian





發文: 250
積分: 0
於 2011-06-06 09:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
mylee wrote:
一個比較實際的風險,JDK 7(含以後版本)的授權規定與以往是否相同?
畢竟神諭公司不是太陽公司,公司格調並沒有比 M$ 好到哪裏。

現在google 和oracle,對於Java的授權使用有爭議,
那JDK7, Android可以採用嗎??
萬一不能採用那google是否可以自行修改java 6 or 5 or 之前的版本核心發展出另一套自己的jdk7 for google??
如果真的是這樣的話,那麼以後學Java要先問清楚是學google version或oracle version的嗎?
因為對於程式碼的授權不是很瞭解希望這問題不會太蠢,


reply to postreply to post
作者 Re:該來聊聊Java SE 7了.. [Re:koji]
tti





發文: 121
積分: 0
於 2011-06-13 22:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
re : 結果Lambda搞這麼久還是得等下次..

是說 Java7 已經沒有這種設計了嗎 ?

話說小弟比較感興趣的是 VM 上的 invokeDynamic 指令集呢

不知道動態化可以帶來什麼驚人的應用Dead


reply to postreply to post
作者 Re:該來聊聊Java SE 7了..[NIO2] [Re:koji]
hchang





發文: 7
積分: 0
於 2011-10-27 14:20 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
SEO turing machine
key word map(key, value)
Steven cram school 3F No.2
Lin fung- book creep page google or find, apropos
searching word
excel cross word
ex underling underlying Outsourcing Big Smile


hchang edited on 2011-11-18 12:55
reply to postreply to post
作者 Re:該來聊聊Java SE 7了..[NIO2] [Re:hchang]
tophero





發文: 2
積分: 0
於 2011-12-16 09:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
想問一下。針對這個監控的新功能,可以用在監控網芳的資料夾嗎?

reply to postreply to post
» JWorld@TW »  Java SE 討論區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8