制作JPAD:跨平台文本编辑器。
#编程 #开源 #java #learning

基于名称,有些人可能已经猜到JPAD是用Java写的:我的主要语言。我之所以选择制作JPAD,是因为我想要一个简单,快速,轻巧的文本编辑器(例如Windows'Stepad),并带有内置语法突出显示。创建这个项目也证明有助于提高我的Java技能并学习一些新概念。

在我进入它之前,您可以在GitHub repo上查看JPAD(它是开源!)

关于jpad

JPAD是一个开源,跨平台和轻巧的文本编辑器桌面应用程序 - 用Java编写带有Swing GUI框架的Java。 JPAD目前是 ,因此可能存在一些意外的错误和不完整/缺失的功能,但是我正在努力改进和添加这些功能。

A screenshot of JPad

为什么要制作jpad?

您打开了几次记事本或短信来快速分析某些代码,但这只是黑白的混乱混乱?至少对我来说,这是一个普遍的情况。我不想像快速查看或修改一个文件那样打开整个强劲的IDE,但是,尝试使用以色

现在,我知道您可能在想什么:为什么不使用Notepad ++?我对JPAD的愿景比Notepad ++更简单。不要误会我的意思,NPP是一个了不起的轻量级文本编辑器,但我并没有想让JPAD进入多文件的开发环境。我只是想要简单的东西。

技术堆栈

我选择使用Java和Swing创建JPAD。我非常可以选择另一种语言,但是我坚持使用Java,因为这是我最熟悉和最舒服的语言 - 更不用说WORA非常方便。我认为成为我的第二语言,但我认为这不适合这个项目。此外,我以前主要与Javafx合作,因此学习和使用摇摆是帮助提高技能的好方法。

选择了语言和框架后,我开始工作。当然,JPAD的主要“卖点”是语法的突出显示。经过一番研究,我遇到了一个非常棒的项目RSyntaxTextArea,它是Swing's Jtextarea的超集,除了它具有多种语言的内置语法。然后,我快速对无花果中的UI进行了模型,并将Rsytnaxtextarea集成到我的应用中。

因为我选择了Java,所以让JPAD跨平台并不难。话虽如此,在编写单个代码库以跨平台方式工作时面临一些挑战。我发现有许多ifs和switches可以检查用户使用哪个操作系统,以便该功能按预期工作。例如,我不得不设置一些特定的System属性,以使我的主JMenu使用MacOS的本机菜单栏。我实际上还没有机会在任何Linux系统上测试JPAD,但是它应该(希望)起作用。学会包装该应用也有点痛苦,因为这是我以前从未做过的事情...

包装

不幸的是,正式签署应用程序非常昂贵 - 尤其是在许多不同的操作系统时这样做时。尽管JPAD并不有害,但许多操作系统和防病毒将其标记为潜在的危险。这只是我在包装此跨平台应用程序时遇到的一个障碍。

包装JPAD在不同的操作系统上的经验截然不同。基本的.jar实际上还不错。 JDK具有内置的jarsigner命令,可帮助您自签名jar文件,包括添加时间戳和到期日期的功能。但是,当然,自我签名并不像使用官方证书那样著名。

包装Windows的JPAD更加乏味。我遇到了一个名为Launch4J的酷程序,该程序使我可以将罐子包裹为.exe。老实说,将模板放下后,很容易重复。之后,我使用了一种称为Inno Setup的工具,这使得为可执行文件制作安装程序变得非常直接。毕竟,JPad.exe准备就绪。

MacOS的过程也不错。我使用了一个名为jpackage的官方CLI工具,该工具帮助我为MacOS打包了JPAD。起初,很难理解如何确切使用命令以及哪些标志很重要。但是,经过一段时间的研究,我设法为JPAD制作了.dmg。我相信jpackage也可以用来制作.exe,但是提到的Windows程序使该过程变得更好。我找不到任何像他们这样的体面程序,所以我求助于jpackage。

结论

希望您喜欢这个关于JPAD的博客。如前所述,JPAD仍在Beta中,所以还有很多事情要做。但是,我对自己的进步感到非常满意。如果您有任何疑问,建议或一般想法,请发表评论:)

此外,欢迎任何人做出贡献!如果您有兴趣,请前往文章顶部链接的GitHub回购。 how to contribute上还有一个简短的降级文件。

最后,我想指出,随着它的进展,我将继续在JPAD上写更多文章(可能以更像Devlog的方式),所以请坚持这些!