
Arthur Dent
你能改变的就是你自己。
对于Java和C#最让我感觉到比go最没有可比性的一点就是,go直接就编译成本地二进制文件了,少了保护代码而需要做的混淆操作。但是,现在Java和C#都可以了。当然,如果用mojo后,python也可以了。
Java编译成二进制的模式来源于GraalVM的操作。
例子来源于GraalVM官网。
一个HelloWorld的例子。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
首先,编译java文件。
javac HelloWorld.java
其次,编程成本地二进制可执行程序。
native-image HelloWorld
最后,运行。
./helloworld
Hello, World!
C#现在越来越流行,假以时日,或许可以和Java完全抗衡。
(单从语音本身来说,c#已经超越了java,可是社区却还有很远的路要走)
单文件部署对C#来说也很简单。
首先,在修改项目文件csproj。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<RuntimeIdentifiers>osx-x64</RuntimeIdentifiers>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<OutputType>Exe</OutputType>
</PropertyGroup>
</Project>
加入输出类型Exe,平台osx-x64,发布单文件PublishSingleFile,自包含SelfContained。
其次,发布。
dotnet publish
在publish文件中找到文件,创建链接文件。(这个步骤可以不用,我主要是创建了一个将发布后的文件链接到执行目录,方便直接运行)
ln -s /Volumes/Transcend/Project/dotnet_core/web/bin/Release/net8.0/osx-x64/publish/web web