Java课程设计——基于Jgit的Git-GUI客户端
班级 | 学号 | 姓名 |
---|---|---|
07111707 | 1320180112 | 张学楠 |
07111707 | 1320180113 | 郝宏盛 |
##1. 程序的运行环境和开发步骤 (1)运行环境: 软件在Linux上开发,软件可以在Linux平台下,在JDK-8的Java环境下运行。已经在win10上测试。在开发中已经考虑到跨平台,在编写时内部代码均无与系统底层相关,所以理论上也可以在其他系统上运行,软件使用字体理论上已经实现内置加载,但是考虑到平台的复杂性,不保证所有平台都可以正常运行。软件内部已经加载了默认字体, 如果软件字体显示效果差,请手动安装DejaVuSansMono-Bold字体保证友好的用户界面。 建议分辨率在不低于1366*768的电脑使用,建议使用1080p的屏幕使用。
(2)安装步骤:
- 在release中下载最新的release jar文件,或者克隆本库。
- 在target文件夹下找到GitU.jar包, 将程序jar文件复制到计算机上
- 在资源管理器中双击,运行程序。或用java -jar GitU.jar命令来运行应用,在终端中会有一些相关开发信息。
##2. 程序开发平台
开发环境:JDK8,使用maven组织包 ##3. 程序功能说明:
(1)顶边栏为功能区,按钮就是所有功能.特别说明,三个圆形按钮的功能类似mac中的红绿灯功能:
- 红色:关闭应用
- 黄色:最小化
- 绿色:最大化
(2)最左边的一栏显示的是用户已经打开的库,点击可以切换,中部为commit message的汇总,点击以后可以在最左边栏显示这次commit的文件信息。底边栏为快速信息查看栏目,第一个是当前Branch名字,第二个是最新一次commit的SHA信息。 ##4. 程序算法说明及面向对象实现技术方案
程序中设计了两个模块:
-
第一个模块resources,是装引用的资源文件:data下的字体资源、icon下的图标文件、style下装主题控件。
-
第二个模块包含三个包,分别是控制界面操作的controller包,负责业务逻辑的model包,管理库的view包。
(1)值得一提的是由于一个界面只有一个controller,因此controller包里的MainController里有好多类用来管理点击活动。
(2) model包有七个类。CloneProject类的静态函数用来打开本地库和view包下的GitRepoMetaData类交互。为了初始化Git库时让软件系统自动给用户生成一个readme文档,提供首次提交,在InitReadme类实现。StageData类用于实现对象的持久化,具体的,Arragist将之储存为文件,第二次打开时返回相同状态。
(3) view第一个类用来处理Git,返回库中所需信息;第二类用于存储库中所有信息。
##5. 技术亮点、关键点及其解决方案 (1)本程序的亮点:
- 生成的客户端简约大方使用体验极佳。
- 有了Jgit,用户可以不用安装Git,就可以管理库,这是有一定便利性。
- 前后端分离,层次分明。
- 使用了JFoenix这个开源组件来替代一些JavaFx的原生组件,这个组件可以实现一个Google Material Design的效果,是非常美观的
- 注重过程,科学的开发方法,迭代维护更新。
(2)本程序的技术关键点
-
这个软件最底层的是Jgit和JavaFx。
-
使用maven管理使用到的开源组件。
-
使用jdk-8开发,因为自带JavaFx,相关组件也很多。
-
特别感谢jgit-cookbook和GitFx,这两个库中的代码帮助很大
(3)遇到的技术难点及对应的解决方案:
-
由于代码里的stagestyle里的undecorated为了界面好看牺牲了使用系统自带的标题栏等等组件,制作了一个类似mac的前端,好处是没有系统标题栏提供的元素。因此在不同平台的软件界面样式一样。然而缺点是软件最小化等涉及到窗口调整需要自己实现,会在以后的版本中修复。 (4)未来展望
-
现在整个客户端的界面只有一个默认的亮色主题(light),今后会开发出暗色模式(dark)来满足用户的不同喜好,优化他们的使用体验。
-
软件仍然处于开发状态,理想情况下还会继续维护,这是一个最早的版本,能够完成基础的git操作,代码将以MII协议释出。希望未来能够覆盖到所有的操作。
##6. 简要开发过程
11月15号 查找资料确定要做的几个思路,进行可行性分析。原本的构思是一个基于DL4J的类keras框架,可是后来发现Java在这方面实在是不行,文档简陋,难以继续,又想开发一个markdown的Java版本的编辑器,但是发现解析器很多都是基于ruby,js等等语言,几乎没有Java的相关的现成的解释器,有的也文档不全,自己写一个解释器的话目测很麻烦,自己也不喜欢文本编辑相关的工作,所以选择了这个项目,一个基于Jgit的一个Java的简单的Git-GUI客户端,能够实现基本的功能,基于eclipse基金会的开源项目Jgit,相对来说文档相对健全,相关文档和教程非常少,中文更少,但是我还是写了一点东西出来。
11月21号 通过大量查找资料学习并完成整个系统的架构。
11月24号 进行界面的设计,并生成相关文件。
11月29号 后端数据库管理功能开发完成,进入测试阶段。
12月6号 对软件在不同的操作系统电脑上进行测试。
12月11号 程序开发工作完毕,编写及整理文档。
##6. 尾
欢迎访问我的技术博客tech.viewv.top获取相关具体文档信息