Aid Learning自从0.80版本开始就自带Jupyter了。
Termux也可以安装Python,然后安装Jupyter,不过要想在Termux使用纯种Java,特别是Java使用Jupyter,则必须安装完整版Linux。
具体介绍如下:
myastrotong:极致安卓之—Aid Learning基于Jupyter开发Java和Pythonzhuanlan.zhihu.com安装完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下面输出
![3abdf2dffbb046b9082e957663e9173c.png](https://i-blog.csdnimg.cn/blog_migrate/c49a2a20cd442545813e3829a0ecfc93.png)
这个例子表示使用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,输出结果如下:
![a0061c4db223af6d22da73059aab5937.png](https://i-blog.csdnimg.cn/blog_migrate/e023e8f52197eef48e5fa6163da18769.png)
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/