# j3270 [![Build & Test](https://git.hugfreevikings.wtf/rudi/j3270/actions/workflows/build.yaml/badge.svg)](https://git.hugfreevikings.wtf/rudi/j3270/actions) [![Latest Release](https://git.hugfreevikings.wtf/rudi/j3270/badges/release.svg)](https://git.hugfreevikings.wtf/rudi/j3270/releases) [![Java](https://img.shields.io/badge/Java-11%20%7C%2017%20%7C%2021-blue.svg)](https://adoptium.net) [![License](https://img.shields.io/badge/License-MIT%20%2F%20BSD-green.svg)](LICENSE) An **x3270-aligned IBM 3270 mainframe terminal emulator** written in pure Java. Designed for high compatibility with IBM z/OS, z/VM, CMS, and TSO systems over TN3270 and TN3270E. --- ## 🚀 Quick Download & Run ### Latest Standalone JAR You can download the ready-to-run executable JAR directly from the releases or CI builds: - **[Download Latest Tagged Release (`j3270.jar`)](https://git.hugfreevikings.wtf/rudi/j3270/releases)** - **[Latest Nightly CI Artifacts](https://git.hugfreevikings.wtf/rudi/j3270/actions)** (Download under the latest successful workflow run) ### Running `j3270` Requires **Java 11 or higher** (Java 11, 17, 21+): ```bash # Launch interactive GUI java -jar j3270.jar # Launch with custom configuration file java -jar j3270.jar -c config.ini # Launch directly from source runner ./run.sh ``` --- ## ✨ Features - **TN3270 & TN3270E Protocol Support**: RFC 2355 compliant state machine, negotiation, Device-Type query, and SSL/TLS encryption. - **IND$FILE File Transfer**: Full support for both **CUT** and **DFT (DDM)** high-speed structured field transfers with ASCII/binary translation, CRLF handling, and recfm/lrecl formatting for TSO, VM/CMS, and CICS. - **z/VM & Line-Mode Support**: Proper SSCP-LU and unformatted line handling (`CP TERM CONMODE 3270` supported). - **APL & Graphic Escape**: Comprehensive box-drawing and math symbol character rendering. - **Terminal Models**: - Model 2 (24x80) - Model 3 (32x80) - Model 4 (43x80) - Model 5 (27x132) - **Zero-Dependency Core**: Modular architecture separated into: - `lib3270j`: Reusable Java 3270 protocol, data stream parser, charset translation, and telnet state machine. - `j3270`: Desktop Swing user interface and session management. --- ## 🛠️ Building from Source ### Standalone Build (No Gradle Required) The project includes self-contained, portable build scripts: ```bash # Build executable JAR in 2 seconds: sh ./build_all.sh # Run all 25 automated unit tests in ~130ms: sh ./test_all.sh ``` The resulting standalone JAR is created at `build/j3270.jar`. ### Gradle Build (Optional) ```bash ./gradlew build ./gradlew test ``` --- ## 🤝 Contributing Contributions and issue reports are welcome! Please feel free to open a bug report or feature request via the Gitea issue tracker. --- ## 📜 Acknowledgements - [x3270](https://x3270.miraheze.org/wiki/Main_Page) — Reference C implementation and protocol specifications - [Antigravity](https://antigravity.google) - Claude Opus 4.6 - Gemini 3.1 Pro