Kettle的工作原理是什么?
一、概述
開源產品總是讓人歡喜讓人憂。喜的是低成本,憂的是低成熟度。所以,不少有Java基礎的K友都在研究源代碼。掌控源代碼,當然是最靠譜的,但對技術水平要求非常高。筆者希望通過介紹Kettle程序啟動的基本原理,為源代碼研究者打開一扇窗戶,一窺源代碼的究竟。
以下內容以Spoon為例,但原理適用于Kitchen、Pan、Carte等所有其他應用。
二、環境
硬件:處理器 Intel i7-7700HQ 2.8GHz 內存32G
操作系統:Windows 7 x64 旗艦版。內部版本6.1.7601,SP1
Java版本:1.8.0_181 HotSpot<TM> 64-Bit mixed mode
三、原理解析
1、批處理文件set-pentaho-env.bat
批處理文件一般不會單獨執行,因為它的功能是進行環境配置。但是大多數Kettle相關的批處理都會先執行此腳本,以設置以下兩個環境變量:
_PENTAHO_JAVA_HOME
_PENTAHO_JAVA
前者是java環境路徑,一般是JDK/JRE所在絕對路徑;后者表示啟動Java進程需要的java.exe/javaw.exe文件所在絕對路徑。由于并不確定用戶到底需要使用java.exe還是javaw.exe,所以腳本單獨定義了__LAUNCHER環境變量表達此選擇。
腳本將按照以下順序搜索__LAUNCHER的位置:
第一個命令行參數的bin文件夾下
PENTAHO_JAVA_HOME環境變量的bin文件夾下
當前路徑下的jre/bin文件夾下
當前路徑下的java/bin文件夾下
當前路徑上級目錄下的jre/bin文件夾下
當前路徑上級目錄下的java/bin文件夾下
當前路徑上上級目錄下的jre/bin文件夾下
當前路徑上上級目錄下的java/bin文件夾下
JAVA_HOME環境變量的bin文件夾下
JRE_HOME環境變量的bin文件夾下
2、批處理文件Spoon.bat
首先會調用相同路徑下的批處理文件set-pentaho-env.bat以設置環境變量。接下來一個重要的工作是查找合適的GUI依賴庫。
由于Spoon中涉及GUI圖形界面,其實現技術為SWT。而SWT的庫是依賴于操作系統的,Linux、蘋果os、Windows32和Windows