天天看點

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理

Aid Learning自從0.80版本開始就自帶Jupyter了。

Termux也可以安裝Python,然後安裝Jupyter,不過要想在Termux使用純種Java,特别是Java使用Jupyter,則必須安裝完整版Linux。

具體介紹如下:

myastrotong:極緻安卓之—Aid Learning基于Jupyter開發Java和Python​zhuanlan.zhihu.com

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理

myastrotong:把安卓手機性能發揮到極緻之-Termux安裝Python及Jupyter​zhuanlan.zhihu.com

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理

myastrotong:極緻安卓之—Termux安裝完整版Linux​zhuanlan.zhihu.com

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理

安裝完Jupyter及IJava以後,就可以在Jupyter環境下愉快的使用Java互動式開發了。

Jupyter的IJava接口實際是基于Java9的JShell或者REPL來執行的。是以官網說隻支援Java9及以後的版本,如果你安裝的是Java8,就别嘗試了,不行!換新版!JDK9、JDK10、JDK11都行的。

Java 9 REPL (JShell)簡介

REPL(Read Eval Print Loop)意為互動式的程式設計環境。

JShell 是 Java 9 新增的一個互動式的程式設計環境工具。它允許你無需使用類或者方法包裝來執行 Java 語句。它與 Python 的解釋器類似,可以直接輸入表達式并檢視其執行結果。

Java Shell工具是JDK1.9出現的工具, Java Shell工具(JShell)是一個用于學習Java程式設計語言和Java代碼原型的互動式工具。

JShell是一個Read-Evaluate-Print循環(REPL),它在輸入時評估聲明,語句和表達式,并立即顯示結果。該工具從指令行運作。

Jupyter之IJava開發進階功能之包管理

本文不介紹Java的簡單文法,這些東東可以參考Jshell。本文主要介紹使用Jupyter進行生産力開發需要必備的包管理功能。

大家都知道,學習Java首要的就是包管理。既然使用了Jupyter,與平常的Java程式開發還是有一點不同。本文主要講述這些“進階”方式。

Jupyter支援maven、pom和本地jar三種方式來管理Java包。以下分别介紹通過這三種管理Java包的方式來編寫Java程式。其中前兩個方式需要聯網。

了解了這三種方式,基本上就不耽誤大家正常開發基本的Java程式了。

1、采用maven方式管理包

在jupyter的shell下輸入:

%maven org.knowm.xchart:xchart:3.6.0 
import org.knowm.xchart.*;
 
int n=100;
double[]xData=new double[n];
double[]yData=new double[n];
for(int i=0;i<n;i++){
 xData[i]=i*0.1;
 yData[i]=Math.sin(xData[i]);
}
 
XYChart chart=QuickChart.getChart("Sample Chart","X","Y","y(x)",xData,yData);
BitmapEncoder.getBufferedImage(chart);
           

點選運作,在Jupyter的out下面輸出

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理

這個例子表示使用xchart 3.6.0包,這個包采用maven直接從網上下載下傳。

%maven org.knowm.xchart:xchart:3.6.0這一行代碼就把xchart 3.6.0包從maven官網下載下傳到本地。

是以如果是第一次使用,則需要下載下傳,是以首次運作需要等待,以後運作就快了。

xchart 是一個輕質、高效的Java繪圖庫。官網為:https://knowm.org/open-source/xchart/

2、基于本地Jar檔案導入包

從xchart官網下載下傳兩個jar檔案:xchart-3.6.0.jar和xchart-demo-3.6.0.jar。然後基于這兩個jar檔案來繪圖。注意這兩個包必須與Jupyter檔案位于同一個目錄下,否則會報錯找不到這兩個包。

源碼如下:

%jars xchart-3.6.0.jar xchart-demo-3.6.0.jar
 
import java.util.Arrays;
import org.knowm.xchart.CategoryChart;
import org.knowm.xchart.CategoryChartBuilder;
import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart;
import org.knowm.xchart.style.Styler.LegendPosition;
 
/**
 * Basic Bar Chart 
 */
public class BarChart01 implements ExampleChart<CategoryChart> {
 
 public static void main(String[] args) {
 
 ExampleChart<CategoryChart> exampleChart = new BarChart01();
 CategoryChart chart = exampleChart.getChart();
 
 //new SwingWrapper<CategoryChart>(chart).displayChart(); 
 BitmapEncoder.getBufferedImage(chart);
 }
 
 @Override
 public CategoryChart getChart() {
 
 // Create Chart
 CategoryChart chart =
 new CategoryChartBuilder()
 .width(800)
 .height(600)
 .title("Score Histogram")
 .xAxisTitle("Score")
 .yAxisTitle("Number")
 .build();
 
 // Customize Chart
 chart.getStyler().setLegendPosition(LegendPosition.InsideNW);
 chart.getStyler().setHasAnnotations(true);
 chart.getStyler().setPlotGridLinesVisible(false);
 
 // Series
 chart.addSeries("test 1", Arrays.asList(0, 1, 2, 3, 4), Arrays.asList(4, 5, 9, 6, 5));
 
 return chart;
 }
}
  
//BarChart01.main(null);//注意:這種方式不行!畫不出圖形!
 
ExampleChart<CategoryChart> exampleChart = new BarChart01();
CategoryChart chart = exampleChart.getChart();
 
//new SwingWrapper<CategoryChart>(chart).displayChart();//官網的這種方式不行! 
 BitmapEncoder.getBufferedImage(chart);
           

運作shell,輸出結果如下:

java 1.8有沒有jshell_Aid learning/Termux之Jupyter的Java程式設計進階篇——包管理
3、基于Maven POM管理包

POM( Project Object Model,項目對象模型 ) 是 Maven 工程的基本工作單元,是一個XML檔案,包含了項目的基本資訊,用于描述項目如何建構,聲明項目依賴,等等。

執行任務或目标時,Maven 會在目前目錄中查找 POM。它讀取 POM,擷取所需的配置資訊,然後執行目标。

POM 中可以指定以下配置:

  • 項目依賴
  • 插件
  • 執行目标
  • 項目建構 profile
  • 項目版本
  • 項目開發者清單
  • 相關郵件清單資訊

在Jupyter的一個shell裡面寫入如下pom管理檔案:

%%loadFromPOM
<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-math3</artifactId>
 <version>3.5</version>
</dependency>
           

首次運作需等待包的下載下傳。

然後在新的一個shell裡面運作:

import org.apache.commons.math3.fraction.*;
Fraction.FOUR_FIFTHS.percentageValue()
           

輸出結果:

80.0
           

本例采用apache的commons-math3數學庫。這是一個強大的數值數學和統計數學庫。

官網位址為:http://commons.apache.org/proper/commons-math/

繼續閱讀