SlideShare a Scribd company logo
1 of 57
IKVM.NET 深入敵營的  Java 王建興 國立清華大學,資訊工程學系 [email_address]
[object Object],[object Object],[object Object],[object Object]
個人簡介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
讓我們先來看一段” Java” 程式碼…
{ try { FileReader fr = new FileReader("log.txt"); BufferedReader br = new BufferedReader(fr); br.readLine(); br.close(); fr.close(); } catch(IOException e) { e.printStackTrace(); } } } } using System; using java.io; namespace JavaCode { class Class1 { [STAThread] static void Main(string[] args)
一次編寫,隨處運行 無處不在的 Java 包括 .NET!
IKVM.NET ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET 系統架構 : JVM 觀點 .NET IKVM.NET Java Class Java Class Java Class Windows Linux
IKVM.NET 系統架構 :  轉換器觀點 .NET/Java core classes .NET IKVM.NET Java Class Java Class .NET Class Windows Linux Java Class .NET Class .NET Class
什麼是 IKVM.NET ,[object Object],[object Object],[object Object],[object Object],[object Object]
GNU Classpath ,[object Object],[object Object]
GNU Classpath in .NET
IKVM.NET 的應用方式 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET 的應用利基 ,[object Object],[object Object],[object Object],[object Object]
IKVM.NET 的應用實例 (1/5) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET 的應用實例 (2/5) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET 的應用實例 (3/5) IKVM.NET Runtime 轉換 Lucene 所得
IKVM.NET 的應用實例 (4/5)
IKVM.NET 的應用實例 (5/5)
作者 ,[object Object],[object Object],[object Object]
系統需求 ,[object Object],[object Object]
下載 ,[object Object],[object Object]
安裝 –  UnZip 即可
基本上毋需設定 binaries 都在 bin 目錄下
但如果想偷懶的話… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
重要組成 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.Runtime.dll ,[object Object],[object Object],[object Object],[object Object]
IKVM.GNU.Classpath.dll  ,[object Object],[object Object],[object Object]
IKVM.JNI.CLR-Win32.dll ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.AWT.WinForms.dll ,[object Object],[object Object]
ikvm.exe ,[object Object],[object Object],[object Object]
ikvmc.exe ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ikvmstub.exe ,[object Object],[object Object],[object Object],[object Object],Java Class .NET Class Stub
相容性與支援性 ,[object Object],[object Object],[object Object]
japitools ,[object Object],[object Object],[object Object],[object Object],[object Object]
GNU Classpath vs. JDK 1.4
GNU Classpath vs. JDK 1.5 java.util.concurrent
IKVM.NET Virtual Machine  ,[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET Bytecode Compiler  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Target Type ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Main Class ,[object Object],[object Object],[object Object]
ikvmc 執行範例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET Stub Generator ,[object Object],[object Object]
ikvmstub 執行範例 ,[object Object],System.Net.Sockets.TcpClient
借力使力的 JVM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IKVM.NET 借力使力的秘訣 .NET/Java core classes .NET IKVM.NET Java Class Java Class .NET Class Windows Linux Java Class .NET Class .NET Class * 重探轉換器觀點
Class Loading 的重要類別 ,[object Object],[object Object],[object Object],[object Object],[object Object]
defineClass() ,[object Object],[object Object],[object Object],[object Object],[object Object]
TypeWrapper ,[object Object],[object Object],[object Object],[object Object]
Object Model Mapping ,[object Object],[object Object],[object Object],[object Object]
Object Model Mapping
Mixed Model http://weblog.ikvm.net/PermaLink.aspx?guid=c16bd06c-1c46-4255-a05f-6625cae7d816
Java 與 .NET 的互換性 ,[object Object],[object Object]
在 .NET 程式中直接使用 Java library [STAThread] static void Main(string[] args) { String index = &quot;index&quot;; String field = &quot;contents&quot;; // IndexReader reader = IndexReader.open(index); // Searcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); // QueryParser parser = new QueryParser(field, analyzer); Query query = parser.parse(&quot;reduplication&quot;); // Hits hits = searcher.search(query); // for(int i=0;i<hits.length();i++) { Document doc = hits.doc(i); String path = doc.get(&quot;path&quot;); Console.WriteLine(path); } } .NET 皮 Java 骨
Java 程式呼叫 .NET 的 classes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Resources ,[object Object],[object Object],[object Object],[object Object]
Thank you! 王建興 [email_address] http://blog.qing.tw

More Related Content

What's hot

Tcon分享 芈峮
Tcon分享 芈峮Tcon分享 芈峮
Tcon分享 芈峮mijun_hlp
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹Alan Tsai
 
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Hazem Saleh
 
Auto fac的介紹 20131018
Auto fac的介紹 20131018Auto fac的介紹 20131018
Auto fac的介紹 20131018LearningTech
 
ClassLoader简析
ClassLoader简析ClassLoader简析
ClassLoader简析wavefly
 
Spring boot 简介
Spring boot 简介Spring boot 简介
Spring boot 简介宇帆 盛
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試國昭 張
 
[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5ArBing Xie
 
.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0ligaoren
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)wangjiaz
 
Free rtos workshop1@nuu
Free rtos workshop1@nuuFree rtos workshop1@nuu
Free rtos workshop1@nuu紀榮 陳
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch15045033
 
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)Will Huang
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseSzuping Wang
 
2. java introduction
2. java introduction2. java introduction
2. java introductionnetdbncku
 

What's hot (19)

Tcon分享 芈峮
Tcon分享 芈峮Tcon分享 芈峮
Tcon分享 芈峮
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
Entity framework + Linq 介紹
Entity framework + Linq 介紹Entity framework + Linq 介紹
Entity framework + Linq 介紹
 
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
 
Auto fac的介紹 20131018
Auto fac的介紹 20131018Auto fac的介紹 20131018
Auto fac的介紹 20131018
 
ClassLoader简析
ClassLoader简析ClassLoader简析
ClassLoader简析
 
Spring boot 简介
Spring boot 简介Spring boot 简介
Spring boot 简介
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 
[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5
 
LLVM introduction
LLVM introductionLLVM introduction
LLVM introduction
 
.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0.net framework from 1.0 -> 4.0
.net framework from 1.0 -> 4.0
 
Struts Mitac(1)
Struts Mitac(1)Struts Mitac(1)
Struts Mitac(1)
 
Free rtos workshop1@nuu
Free rtos workshop1@nuuFree rtos workshop1@nuu
Free rtos workshop1@nuu
 
笔记
笔记笔记
笔记
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1
 
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime database
 
2. java introduction
2. java introduction2. java introduction
2. java introduction
 

Viewers also liked

第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計力中 柯
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用建興 王
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式建興 王
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI建興 王
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 建興 王
 
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用建興 王
 

Viewers also liked (11)

第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統
 
全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用全文搜尋引擎的進階實作與應用
全文搜尋引擎的進階實作與應用
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 

Similar to IKVM.NET 深入敵營的 Java

000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍Jim Jiang
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
漫谈php和java
漫谈php和java漫谈php和java
漫谈php和javasulong
 
第一章 概述和Jdk的安装和配置
第一章 概述和Jdk的安装和配置第一章 概述和Jdk的安装和配置
第一章 概述和Jdk的安装和配置yinmei1983
 
物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)Hui-Shih Leng
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Gelis Wu
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告ahnlabchina
 
Asp.net 介绍
Asp.net 介绍Asp.net 介绍
Asp.net 介绍yifeng
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Justin Lin
 
Java 案例实战(一)
Java 案例实战(一)Java 案例实战(一)
Java 案例实战(一)lovebirdegg
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程wavefly
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
Jvm独家剖析
Jvm独家剖析Jvm独家剖析
Jvm独家剖析li yan
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)yiditushe
 
Java Web动态图表编程
Java Web动态图表编程Java Web动态图表编程
Java Web动态图表编程yiditushe
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletJustin Lin
 

Similar to IKVM.NET 深入敵營的 Java (20)

系統程式 -- 第 9 章
系統程式 -- 第 9 章系統程式 -- 第 9 章
系統程式 -- 第 9 章
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
漫谈php和java
漫谈php和java漫谈php和java
漫谈php和java
 
SCJP ch02
SCJP ch02SCJP ch02
SCJP ch02
 
第一章 概述和Jdk的安装和配置
第一章 概述和Jdk的安装和配置第一章 概述和Jdk的安装和配置
第一章 概述和Jdk的安装和配置
 
物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)物件導向程式設計課程講義(98 ges hi版)
物件導向程式設計課程講義(98 ges hi版)
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告
 
Asp.net 介绍
Asp.net 介绍Asp.net 介绍
Asp.net 介绍
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
 
Java 案例实战(一)
Java 案例实战(一)Java 案例实战(一)
Java 案例实战(一)
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
Jvm独家剖析
Jvm独家剖析Jvm独家剖析
Jvm独家剖析
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)
 
Java Web动态图表编程
Java Web动态图表编程Java Web动态图表编程
Java Web动态图表编程
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
 

IKVM.NET 深入敵營的 Java

Editor's Notes

  1. Visual J#
  2. 有許多的專案,都嘗試著努力將 Lucene 移植至 .NET 平台,照我說,為什麼要移植呢? 我們可以用真正純正血統的原 Java 專案