{"id":20572867,"url":"https://github.com/zlgopen/awtk-java","last_synced_at":"2025-04-14T17:23:34.613Z","repository":{"id":76747787,"uuid":"226470573","full_name":"zlgopen/awtk-java","owner":"zlgopen","description":"JAVA Binding for AWTK","archived":false,"fork":false,"pushed_at":"2024-10-28T09:52:05.000Z","size":31221,"stargazers_count":7,"open_issues_count":4,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T06:04:18.272Z","etag":null,"topics":["awtk","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zlgopen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-07T07:05:40.000Z","updated_at":"2024-10-28T09:52:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"a83f5607-f9b7-46e8-8a27-823291bbb6c6","html_url":"https://github.com/zlgopen/awtk-java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zlgopen%2Fawtk-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zlgopen%2Fawtk-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zlgopen%2Fawtk-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zlgopen%2Fawtk-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zlgopen","download_url":"https://codeload.github.com/zlgopen/awtk-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248924362,"owners_count":21184066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awtk","java"],"created_at":"2024-11-16T05:24:21.556Z","updated_at":"2025-04-14T17:23:34.556Z","avatar_url":"https://github.com/zlgopen.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# awtk-java\n\nZLG 开源 GUI 引擎 [awtk](https://github.com/zlgopen/awtk) 针对 JAVA 的绑定。\n\n## 为什么要支持 JAVA\n\nJAVA 运行环境体积很大，而且自己有强大的 GUI 系统。AWTK 为什么要支持 JAVA 的绑定呢：\n\n* 首先这是一件很好玩的事情。\n\n* JAVA 是一个典型的静态类型语言，希望支持 JAVA 绑定后，再支持 C#/Go/Rust 应该不难了。\n\n* JAVA 是从嵌入式开发来的。嵌入式 Linux 系统用 J2ME + AWTK 或 minijvm + AWTK 也是有趣的尝试。\n\n## 准备\n\n1. 获取 awtk 并编译\n\n```\ngit clone https://github.com/zlgopen/awtk.git\ncd awtk; scons; cd -\n```\n\n\u003e AWTK 的编译环境请参考 AWTK 的文档。\n\n2. 获取 awtk-java 并编译\n\n* 获取代码\n\n```\ngit clone https://github.com/zlgopen/awtk-java.git\ncd awtk-java\n```\n\n* 安装 [JDK](https://www.oracle.com/java/technologies/downloads/)。\n\n* 安装 [Maven](https://maven.apache.org/)。\n\n* 根据平台修改 env_xxx.sh，设置 JAVA_HOME 等环境变量。\n\n* 编译 \n\n```\nmake\n```\n\n\u003e 如果系统中没有 make 命令，可以手工执行 make.sh 中的命令。\n\n```\n./make.sh\n```\n\n## 运行\n\n```\n./bin/awtkRun bin/awtk.jar:bin/awtk_demos.jar classname\n```\n\n请把 classname 换成具体的 classname。如：\n\n```\n./bin/awtkRun bin/awtk.jar:bin/awtk_demos.jar DemoBasic\n```\n\n\u003e Linux平台可以直接用java命令运行。如：\n\n```\njava -Djava.library.path=./lib -cp \"bin/awtk_demos.jar:bin/awtk.jar\" DemoButton 800 600\n```\n\n## 更新绑定（由本项目的维护人员完成）\n\n```\n./sync.sh\n```\n\n\u003e 在非 bash 终端（如 Windows 平台的 cmd.exe)，需要根据 sync.sh 的内容手工执行相应的命令。\n\n## 代码示例\n\n```java\n    TWidget win = TWindow.createDefault();\n    TWidget button = TButton.create(win, 0, 0, 0, 0);\n\n    button.setName(\"quit\");\n    button.setText(\"Quit\");\n    button.setSelfLayout(\"default(x=c,y=m,w=200,h=40)\");\n\n    button.on(TEventType.CLICK, new TOnEvent() {\n      @Override\n      public TRet onEvent(TEvent evt) {\n        System.out.println(\"OnClick\");\n        TGlobal.quit();\n        return TRet.OK;\n      }\n    }, 0)\n```\n\n## 文档\n\n[AWTK 脚本绑定原理](https://github.com/zlgopen/awtk/blob/master/docs/script_binding.md)\n\n[JAVA 绑定笔记](docs/tech_notes.md)\n\n[在 C++中嵌入 JAVA](docs/embedd_java_in_cpp.md)\n\u003e 本文以 Linux/MacOS 为例，Windows 可能会微妙差异，请酌情处理。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzlgopen%2Fawtk-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzlgopen%2Fawtk-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzlgopen%2Fawtk-java/lists"}