简单了解 xlang
XLANG 是什么?
xlang是一门程序设计语言, 用于windows、Linux、Mac OSX应用开发。
使用 C/C++ 系语法。
跨平台,支持在Windows(兼容XP),linux各发行版及架构、MacOS、iOS、android等平台上独立运行,虽然支持win xp系统,但由于系统原因,可能尚存在不明确的问题.
语言特性简单,较为接近java语言,例如新建项目中的控制台程序模板:
-
-
- package System{
-
- public class out{
-
- public static int println(String text){
-
- return _system_.consoleWrite(text + "\n");
- }
- public static int print(String text){
- return _system_.consoleWrite(text);
- }
- };
- };
-
-
-
- using { System; };
-
-
-
- int main(String [] args){
- 调用上面定义的方法来输出文字
- System.out.println("hello World!");
-
- return 0;
- }
-
-
强类型与自动内存回收,提高开发效率,降低后期成本,更适合做框架。
支持多线程和闭包,提高并行任务能力,使用多线程的例子:
- int main(String [] args) {
-
- int n = 0;
-
-
- Thread t = new Thread() {
- void run()override {
-
- System.out.println("n = " + n++);
- }
- };
-
-
- t.start();
-
- t.join();
- return 0;
- }
-
-
语法结构简单、同时支持重载操作符、泛型、注解.如下例:
-
-
- class cout{
-
- public static cout operator << (String txt){
- _system_.consoleWrite(txt);
- return new cout();
- }
- };
-
- int main(String [] args) {
-
- cout << "hello" << " " << "world!";
- return 0;
- }
-
-
重载操作符与模板类使用实例:
-
-
- class MyArray<T>{
- private T [] _array;
-
- public MyArray(int presize){
- _array = new T[presize];
- }
-
- public void operator [] (int n, T o){
- if (n >= 0 && n < _array.length){
- _array[n] = o;
- }else{
- throw new IndexOutOfBoundsException();
- }
- }
-
- public T operator [](int n){
- if (n >= 0 && n < _array.length){
- return _array[n];
- }else{
- throw new IndexOutOfBoundsException();
- }
- return nilptr;
- }
- };
-
- int main(String [] args) {
-
- MyArray<String> _ma = new MyArray<String>(10);
-
- _ma[3] = "hi!";
-
- _system_.consoleWrite(_ma[3]);
- return 0;
- }
-
-
除使用模板外,还可以使用 Object 类型:
-
-
- class MyArray{
- private Object [] _array;
-
- public MyArray(int presize){
- _array = new Object[presize];
- }
-
-
- public void operator [] (int n, Object o){
- if (n >= 0 && n < _array.length){
- _array[n] = o;
- }else{
- throw new IndexOutOfBoundsException();
- }
- }
-
-
- public Object operator [](int n){
- if (n >= 0 && n < _array.length){
- return _array[n];
- }else{
- throw new IndexOutOfBoundsException();
- }
- return nilptr;
- }
- };
-
- int main(String [] args) {
-
- MyArray _ma = new MyArray(10);
-
-
- _ma[3] = "hi!";
-
-
- Object s = _ma[3];
-
-
- if (s.instanceOf(String)){
- _system_.consoleWrite((String)s);
- }
- return 0;
- }
-
-
注解功能:
-
-
- @Compiler(version = ">=4.0")
- @SuppressWarnings
- @Native(CallConvention = "stdcall")
- void foo(String s){
- _system_.consoleWrite(s);
- }
-
-
支持跨平台,专用的集成开发环境, 使用第三方库Qt开发,具有可视化UI设计、在任一平台的开发都同样便利.
能作为主要语言来开发应用,且能够调用C/C++ 或者其他更低级语言编写的动态库, 例如调用C/C++导出方法:
注解功能:
-
-
-
- class Winapi{
-
- public import "user32"{
-
- int stdcall MessageBoxA(Pointer, String text, String title, int flag);
- };
- };
-
- int main(String [] args) {
-
- Winapi.MessageBoxA(0L,"Hello 2024","hi",0);
- return 0;
- }
-
-
注:native调用是不安全的,需确保类型、调用约定、资源等正确处理,否则可能出现不可挽回的RuntimeExceptione导致中断退出, xlang 类型与C/C++类型互转,请参阅文档
更多示例请见XStudio示例代码和文档。
......
最后:
xlang 是一门虚拟机语言, 运行在虚拟机之上,可产出带虚拟机外壳的独立执行程序,也可以产出字节码程序、动态库、静态库,可以很方便的实现热加载.
xlang 更适合开发桌面应用的框架.
xlang 的编译器和虚拟机现阶段暂未开源.
xlang 的所有基础库都是开源的。
XStudio 是开源的。
上述已开源的项目在github和gitee中可找到全部源代码。
其他疑问请联系QQ群.