最近做的课程设计要求必须使用Java写,但是Java做界面又比较麻烦,故而想到了一个同时使用Java、Python和前端生态构建界面的方案。具体的说,是使用Jpype在Python中调用Java,使用Streamlit来用Python写前端。

1.在Python中调用Java

首先是在Python中调用Java。Jpype是Python的一个Java桥接库,可以在Python中使用Java虚拟机,并调用Java中的类与方法。官网地址如下,直接pip就能下载:http://jpype.sourceforge.net/

python颗粒流模拟_前端

http://jpype.sourceforge.net/不同于Jython,Jpype没有重新实现Java,而是直接使用Java的jvm,因此也更加全面,可以在Python中使用Java的类,并进行实例化,继承和实现接口等等。同时,Jpype也支持在Python和Java的基本数据之间无缝转化。

要使用Jpype,需要将Java项目打包为jar包,然后在Python中使用Jpype启动一个虚拟机,并且运行和调用相关的Java类。参考:

IDEA中打jar包的两种方式_立二拆四i的博客_idea打包jar包

JPype使用_CHERISHGF的博客_jpype

2.使用Python写前端界面

Python不是前端语言,但可以用来写前端界面。Streamlit是Python的一个前端库,Streamlit的特点是语法十分简单,可以快速构建前端界面。以下是Streamlit的官网:

Streamlit • The fastest way to build and share data appsStreamlit is an open-source app framework for Machine Learning and Data Science teams. Create beautiful web apps in minutes.

https://streamlit.io/Streamlit内置了一个后端框架,所以不需要再使用Springboot或者Flask搞前后端分离。所以这套方案的前端和后端的核心都在Python上。Streamlit还支持自定义组件,可以和React、Vue等前端框架配合。参考:

Streamlit documentation

GitHub上Streamlit自定义组件的官方示例

3.其它有用的链接

在Streamlit中使用cookies:

Parse user cookies in Streamlit – tcoil.info

Streamlit Cloud平台:

Cloud • Streamlit

Streamlit 组件精选:

Components • Streamlit

Streamlit的状态管理:

Session State - Streamlit

用于Python的已打包好的JDK:

jdk4py · PyPI

Streamlit页面路由以及拓展组件

Extra-Streamlit-Components · PyPI

4.个人建议

Jpype+Streamlit可以摆脱前后端分离方案,而且综合了三种语言生态。但究竟能做到多大的应用场景还有待验证,建议用在写个人小项目或者要快速写出个界面时。