Ubnt Discovery Tool V251 And Java On Windows 10 Updated _top_ -
The Ubiquiti Discovery Tool v2.5.1 is a legacy utility that often encounters significant compatibility issues on modern Windows 10 systems due to its strict dependency on older Java runtimes. While many users experience "Java Exception" errors with current updates, the tool remains functional if configured with the correct environment or replaced by modern alternatives. The Challenge of Legacy Compatibility
The primary hurdle for v2.5.1 on Windows 10 is that it was designed for older versions of the Java Runtime Environment (JRE). Modern updates to Java 8 (specifically versions after Update 281) frequently break the tool, leading to startup crashes or execution errors. This is largely due to code obfuscation techniques in the original tool that are incompatible with the security and syntax standards of newer Java versions. Strategies for Continued Use
For users who require this specific version, several workarounds have been identified by the community:
Targeted Java Downgrading: Using Java 8 Update 251 is widely cited as the most stable environment for this utility.
Portable Java Environments: Rather than downgrading the entire system, users often download a portable version of an older JRE and modify the tool's .bat file to point directly to that specific java.exe.
Firewall Configuration: On Windows 10, the tool may fail to find devices if the Windows Firewall or third-party antivirus software blocks its broadcast packets. Modern Alternatives
Given that v2.5.1 is officially deprecated and no longer receives security or performance updates from Ubiquiti, many professionals have transitioned to newer solutions:
WiFiman Desktop: Ubiquiti's modern replacement for device discovery and network analysis.
Mobile Apps: The UniFi or UISP mobile apps provide robust discovery features via Bluetooth or local Wi-Fi.
Community Patches: Projects like the MatrixEditor/ubnt-discovery-tool on GitHub offer updated, faster versions of the discovery logic with improved Java compatibility.
Installing Ubiquiti Discovery Tool on new Windows 10 Pro laptop
Title: Running the Ubiquiti Discovery Tool v2.5.1 on Windows 10 (Updated)
Introduction The Ubiquiti Discovery Tool (version 2.5.1) is a legacy utility used to discover and initially configure Ubiquiti Networks devices (such as airMAX, UniFi, and EdgeMax products) on a local subnet. Unlike later cross-platform tools, v2.5.1 is a Java-based application. As Windows 10 receives regular cumulative updates (including security patches, .NET Framework updates, and Java environment changes), running this older tool can present compatibility challenges.
Java Dependency UBNT Discovery Tool v2.5.1 requires Oracle Java Runtime Environment (JRE) 7 or 8 (32-bit or 64-bit, depending on your OS architecture). It is not compatible with:
- Java 9 or later (due to removed deprecated features and security restrictions).
- OpenJ9 or alternative JVMs without full AWT/Swing support.
Common Issues on Updated Windows 10
- “Java not recognized” or “No Java installed” error – The tool cannot locate
javaw.exe, even if Java is present. This occurs because the installer’s registry lookup fails on newer Windows builds. - Security blocks – Updated Windows Defender SmartScreen or outdated Java code-signing may block execution.
- UI rendering problems – Scaling issues on high-DPI displays (e.g., 4K monitors) due to Java’s legacy GUI libraries.
- Network discovery failures – Windows Firewall updates may block UDP broadcast packets (ports 10001 or 10002) required for device discovery.
Recommended Workarounds for Updated Systems
1. Install a Compatible Java Version
- Download JRE 8u202 (the last free public update for commercial use) from the Oracle archive.
- During installation, disable “Java Auto-Update” to avoid upgrading to incompatible versions.
2. Launch with Explicit Java Path
Create a batch script (launch_ubnt.bat) in the tool’s folder:
"C:\Program Files\Java\jre1.8.0_202\bin\javaw.exe" -jar UBNTDiscoveryTool.jar
3. Configure Windows Security & Firewall
- Temporarily disable SmartScreen or add the
.jarfile as an allowed app. - Create an inbound firewall rule to allow UDP ports 10001 and 10002 for
javaw.exe.
4. DPI Scaling Fix
Right-click javaw.exe → Properties → Compatibility → Change high DPI settings → Override high DPI scaling behavior performed by: System (Enhanced).
Alternative Approach: Use a Modern Tool Ubiquiti has largely replaced the Java Discovery Tool with:
- UISP Discovery Tool (native Windows application, no Java required)
- UniFi Network Application’s built-in device discovery
- Advanced IP Scanner or
arp -afor basic discovery
Conclusion While UBNT Discovery Tool v2.5.1 can still function on a fully updated Windows 10 system, it requires manual Java 8 management, security exceptions, and DPI tweaks. For production environments, migrating to Ubiquiti’s current native discovery utilities is strongly recommended to avoid compatibility risks and security vulnerabilities inherent in running legacy Java applications.
Running the Ubiquiti Device Discovery Tool v2.5.1 on a modern, updated Windows 10 machine often triggers a "Java Exception". This is primarily because the tool relies on older Java versions and illegal variable names (e.g., this.super
) that modern Java Runtime Environments (JRE) no longer allow. Ubiquiti Community Core Compatibility Requirements
To get the legacy Java tool running on an updated Windows 10 system, you must meet specific software conditions: Java Version : The tool is most stable on Java 8 Update 251 Version Mismatch
: Using a "modern" JRE (like Java 11+ or even late-build Java 8 versions like 1.8.0_291) will typically result in a launch failure. Architecture : It is often recommended to have both 32-bit and 64-bit Java 8 installed to ensure the batch ( ) file can find the correct runtime. Ubiquiti Community How to Run v2.5.1 Successfully
Installing Ubiquiti Discovery Tool on new Windows 10 Pro laptop
"A Java Exception has occurred." It is no longer supported I believe. It doesn't work anymore with newer Chrome versions. Ubiquiti Community ubnt discovery doesnt work on win10
The UBNT Discovery Tool v2.5.1 remains a critical utility for network administrators managing Ubiquiti hardware, though running it on Windows 10 with modern Java updates requires specific configurations. While the tool is technically deprecated, it can still function correctly if you align the Java Runtime Environment (JRE) and system permissions properly. Essential Prerequisites
To run the v2.5.1 discovery tool successfully, your environment must meet these updated requirements:
Java Version: The tool is highly sensitive to Java versions. Many users report that Java 8 Update 251 is the most stable "modern" version for this specific utility.
Alternative Runtimes: If you avoid standard Oracle Java, Amazon Corretto 8 (an OpenJDK distribution) is a recommended alternative that maintains compatibility.
Firewall Permissions: Windows 10 frequently blocks the discovery packets (UDP) used by the tool. You must ensure that both the Java runtime and the Discovery Tool have explicit permissions in the Windows Defender Firewall. Installation & Execution Guide UBNT Discovery tool and new Java | Ubiquiti Community
The Ubiquiti (UBNT) Device Discovery Tool v2.5.1 is a legacy utility that often struggles on modern Windows 10 environments due to its heavy reliance on outdated Java versions. While officially discontinued, it remains a "holy grail" for technicians needing to find older AirMax devices or radios without current cloud controllers. 🛠️ The Java Compatibility "Trap"
The most common issue on Windows 10 is the "A Java Exception has occurred" error when trying to run the .jar or .bat file.
The Problem: The tool generally breaks on Java 8 versions newer than Build 271. ubnt discovery tool v251 and java on windows 10 updated
The "Sweet Spot": Many users report success specifically with Java 8 Update 251 or older.
The Fix: You don't have to downgrade your entire system's Java. You can use a portable JDK/JRE folder (like version 1.7.0_40) and run the tool via a command line that points directly to that specific java.exe. Quick Command Fix
If you have an old JRE folder, run it like this:C:\path\to\old-jre\bin\java.exe -jar ubnt-discovery-v2.5.1.jar ⚡ Current Review: Is It Still Worth It? Reliability
Low. Frequently requires firewall exceptions and specific Java versions to even open. Functionality
Partial. It sees older M-series devices well but often misses newer AC-series or UniFi gear. Ease of Use
Poor. Requires manual setup on Windows 10; the Chrome Extension version is often recommended as a simpler alternative. 🚀 Better Alternatives for 2024
If you find the Java headache isn't worth it, Ubiquiti has moved toward newer, more stable solutions: Discovery tool is failing... and we really need it
The Ubiquiti (UBNT) Device Discovery Tool v2.5.1 is a legacy utility that has become increasingly difficult to use on modern Windows 10 systems due to its reliance on outdated versions of Java. While still valued for its simplicity, it is now considered deprecated and generally unsupported by Ubiquiti. Critical Compatibility Issues
Java Version Conflicts: The primary issue with v2.5.1 on updated Windows 10 machines is that it often fails with a "Java Exception has occurred" error.
Breaking Update: Many users report that Java 8 Update 281 and later versions break the tool.
Compatibility Sweet Spot: To run the tool successfully, you typically need to use an older version of Java, specifically Java 8 Update 271 or earlier. How to Make It Work (Workarounds)
If you must use the Java version of the tool on Windows 10, consider these community-tested fixes:
Downgrade Java: Uninstall current Java versions and install JRE 8 Update 271.
Portable Java: Download a portable, older version of Java and modify the ubnt-discovery.bat file to point directly to that specific java.exe instead of the system-wide installed version.
Firewall Settings: Ensure that your Windows Firewall is not blocking the tool, as it requires network access to send discovery packets. Recommended Modern Alternatives
Because running outdated Java versions poses security risks, Ubiquiti and its community suggest moving toward newer tools:
Installing Ubiquiti Discovery Tool on new Windows 10 Pro laptop
Getting Ubiquiti Discovery Tool v2.5.1 to Work on Windows 10
If you've recently updated Windows 10 and found your trusted Ubiquiti Discovery Tool v2.5.1
version) suddenly throwing "Java Exception" errors or failing to open entirely, you aren't alone. This classic utility has become increasingly finicky with modern Java Runtime Environments (JRE).
Here is how to troubleshoot and fix the tool on your updated system. Why It’s Failing
The core issue is often compatibility with newer Java builds. Specifically, the tool is known to break on Java 8 Update 281
and later. It relies on specific code obfuscation techniques that modern JREs consider "illegal," causing the application to crash immediately upon launch. Step-by-Step Fixes 1. Use the "Portable Java" Workaround
Instead of fighting with your system-wide Java installation, use an older, portable version specifically for this tool: Download an older JRE: Look for a portable version of Java 8 Update 271 or earlier. Edit the .bat file: If your discovery tool came with a
launcher, edit it to point directly to the path of the older
you just downloaded rather than using the default system command. 2. Check Your Firewall and Network Profile
Windows 10 updates frequently reset or tighten firewall rules. Firewall Access:
Ensure that both Java and the Discovery Tool have permission to communicate through the Windows Firewall Private vs. Public: Make sure your network profile is set to
. If it is set to "Public," Windows may block the broadcast frames the tool needs to find your Ubiquiti gear. 3. Modern Alternatives (If Java Still Fails)
Since the Java-based tool is deprecated and increasingly difficult to run on modern OS versions, Ubiquiti recommends several newer alternatives: WiFiman Desktop:
A modern replacement for Windows that includes powerful network discovery features without requiring Java. Ubiquiti Device Discovery (Chrome Extension):
Although it has had its own availability issues, it remains a common recommendation as it doesn't rely on a local Java install. Mobile Apps: UISP Mobile
apps are often more reliable for quick discovery if you have WiFi or Bluetooth access to the network. Summary Table: Quick Compatibility Reference Best Known Working Java UBNT Discovery v2.5.1 Deprecated Java 8 (Build 271 or older) Windows 10 (Updated) Requires Firewall exceptions Chrome Extension N/A (Runs in browser) ubnt discovery doesnt work on win10
How to Use UBNT Discovery Tool v2.5.1 with Java on Windows 10 (2024 Update) The Ubiquiti Discovery Tool v2
The Ubiquiti Device Discovery Tool v2.5.1 remains a critical utility for network administrators needing to locate and manage Ubiquiti devices—such as airMAX antennas and UniFi Access Points—across a local network. However, running this aging tool on modern versions of Windows 10 often presents challenges, primarily due to Java compatibility and security updates.
This updated guide provides the necessary steps to get the discovery tool operational and highlights modern alternatives. 1. Prerequisites and Installation
To run the standalone version of the discovery tool, you must have the Java Runtime Environment (JRE) installed on your system.
Download the Tool: You can still find the legacy discovery tool available for download through various archive and support sites.
Java Requirements: While the tool was originally designed for older versions, it generally requires Java 8. Some users have reported success using Amazon Corretto, a production-ready distribution of the OpenJDK. 2. Fixing Common Windows 10 Issues
If you encounter a "Java Exception" or the tool fails to launch, try these common fixes: Index of /Downloads/Discovery Ubiquit - i8 Digital
Table_title: Index of /Downloads/Discovery Ubiquit Table_content: header: | Name | Last modified | Size | row: | Name: tftp2.exe | i8 Digital ubnt-discovery tool not working on modern JREs (even JDK8)
The Ubiquiti Device Discovery Tool v2.5.1 is officially end-of-life and often fails with a "Java Exception" on updated Windows 10 systems because it is incompatible with modern Java Runtime Environments (JRE). Running the Legacy Tool
If you must use the v2.5.1 Java version, you generally need to downgrade or point the tool toward an older, specific version of Java.
Version Compatibility: Users have reported that Java 8 Update 251 is the last version where the tool reliably works. Modern updates (like Java 8 Update 281 and higher) typically break the application.
Non-Global Installation: To avoid compromising your system's security by installing an old Java version globally, you can download a portable version of Java 7 or Java 8 (u251) and edit the .bat file to point specifically to that java.exe.
Alternative Browser Extension: Ubiquiti previously offered a Chrome extension that did not require Java, though its reliability on modern versions of Chrome and Edge is inconsistent. Modern Alternatives
Because the legacy discovery tool is no longer supported, it is recommended to use newer official or community-driven utilities: UBNT Discovery Tool V2.5.1 and JAVA on windows 10
The Ubiquiti (UBNT) Device Discovery Tool v2.5.1 is a legacy Java-based utility used to locate airMAX and UniFi devices on a local network. While widely used for years, it has become notoriously difficult to run on updated Windows 10 systems due to its strict dependency on older Java environments and modern security restrictions. Prerequisites for Windows 10
To run v2.5.1 successfully, your system must meet specific criteria that deviate from standard modern setups:
Java Version: The tool is highly sensitive to Java updates. Community consensus identifies Java 8 Update 251 as a stable version that often resolves "Java Exception" errors.
Network Environment: Your computer must be on the same Layer 2 broadcast domain (same subnet/VLAN) as the Ubiquiti devices.
Firewall Permissions: Windows Defender Firewall often blocks the discovery broadcast frames. You may need to temporarily disable it or create an explicit inbound/outbound rule for the Java executable. Installation and Setup Guide
Download the Tool: Obtain the ubnt-discovery-v2.5.1.jar or the complete ZIP package from the Ubiquiti Downloads page.
Install Java 8: Download and install a compatible Java 8 Runtime Environment (JRE). If using a corporate environment, consider an OpenJDK alternative like Amazon Corretto. Execution:
Right-click the .jar file and select Open with > Java(TM) Platform SE binary.
Alternatively, run the included ubnt-discovery.bat file to launch the tool via the command line, which can provide error logs if it fails. Common Troubleshooting
Java Exception Error: This typically indicates a version mismatch. Many users report that newer Java 8 updates (like 281 or higher) break the tool, necessitating a rollback to Version 8 Update 251. Empty Device List: If the tool opens but finds nothing:
Ensure your network location is set to Private rather than Public.
Verify that your antivirus is not intercepting the discovery packets.
Use a tool like Wireshark to confirm you are actually receiving broadcast frames from the equipment. Modern Recommended Alternatives
Because v2.5.1 is officially deprecated and unsupported, Ubiquiti recommends transitioning to modern alternatives that do not require Java:
Getting the UBNT Discovery Tool v2.5.1 Running on Windows 10 (2024 Update) If you have tried to run the classic Ubiquiti Device Discovery Tool v2.5.1
on a modern Windows 10 machine lately, you have likely run into the dreaded "Java Exception has occurred" error. This legacy tool is no longer officially supported by Ubiquiti, but it remains a favorite for network techs because it uses broadcast messages to find devices even when they are on a different subnet. Ubiquiti Community
Here is how to get it working again without compromising your system's security. The Problem: Java 8 Update 281+ The primary issue is that Java 8 Update 281
and newer versions broke compatibility with the Discovery Tool due to changes in how the Java Virtual Machine handles certain variable identifiers. If you have the latest Java installed, the file simply won't open. Ubiquiti Community The Solution: Using a Portable "Side-Car" Java
The safest and most effective way to run the tool is to use an older, portable version of Java specifically for this app, rather than downgrading your entire system's Java. Ubiquiti Community Download a Legacy JRE/JDK
: Community members have found success using older versions like Java 8 Update 271 JDK 1.7.0_40 Keep it Portable
: Do not "install" this old version. Simply unzip it into a dedicated folder (e.g., C:\ubnt-tool\jre8 Run via Batch File : Instead of double-clicking the , create a shortcut or edit the provided file to point specifically to that old Java executable: Title: Running the Ubiquiti Discovery Tool v2
"C:\path\to\old\jre\bin\java.exe" -jar "ubnt-discovery-v2.5.1.jar" Ubiquiti Community Recommended Modern Alternatives
Since the Java tool is deprecated, Ubiquiti has moved toward newer platforms that are more stable on Windows 10 and 11: WiFiman Desktop
: This is the official modern replacement. It offers a sleek interface and powerful network discovery, though some techs find it less reliable than the old broadcast method for finding devices on mismatched subnets. It is available for download at Ubiquiti Downloads Ubiquiti Device Discovery (Chrome Extension)
: While some find it temperamental, the Chrome version does not require Java at all and can still be found in the Chrome Web Store UISP Mobile App
: For on-the-go discovery, many pros now prefer using the UISP app on a mobile device connected to the same local network. Ubiquiti Community Quick Troubleshooting Tips
: Always check that your Windows Firewall is not blocking the tool. It requires permission to listen for incoming broadcast packets.
: Some proactive security suites block the execution of older Java apps as a "suspicious" action. Ubiquiti Community Are you trying to find a specific device that isn't showing up with the standard tools? UBNT Discovery Tool V2.5.1 and JAVA on windows 10
UBNT Discovery Tool v2.5.1 and Java on Windows 10 (updated)
Overview
- UBNT Discovery Tool v2.5.1 (Ubiquiti/UNMS ecosystem tool) scans local networks to locate Ubiquiti devices, display firmware and IP info, and push basic configuration. Recent Windows 10 updates and Java runtime changes can affect discovery behavior.
Compatibility and Java dependency
- v2.5.1 historically required a Java Runtime Environment (JRE) or bundled Java to run. On modern Windows 10 builds, mismatched Java versions, removed legacy TLS/Cipher support, or 32-bit vs 64-bit Java mismatches cause startup failures, missing device listings, or UI errors.
- Check whether your v2.5.1 executable is a standalone package (bundled JRE) or a Java-dependent launcher. Standalone builds are less affected by system Java; launcher variants need a compatible JRE installed.
Common issues after Windows 10 updates
- App fails to start or crashes on launch.
- No devices discovered despite correct network/subnet.
- Discovery shows limited device info or fails to push settings.
- Permissions issues blocking raw socket operations (required for broadcasts/multicast).
Troubleshooting and fixes (step-by-step)
- Confirm app type:
- If you have a .jar or a launcher that requires Java, install a compatible JRE (prefer 8uXXX or the version documented by UBNT for v2.5.1).
- Install matching Java:
- Use the same architecture (32-bit vs 64-bit) as the Discovery Tool. Install AdoptOpenJDK/OpenJDK or Oracle JRE matching required version.
- Run as Administrator:
- Right-click the tool → Run as administrator to allow network/broadcast access.
- Allow through firewall:
- Add inbound/outbound rules for the Discovery Tool executable and for Java (java.exe) in Windows Defender Firewall; allow private network access.
- Enable network discovery:
- In Windows Settings → Network & Internet → Network and Sharing Center → Advanced sharing settings → Turn on network discovery.
- Check Java TLS/cipher issues:
- If secure connections to devices fail, use a Java version that still enables legacy TLS/ciphers or edit Java security config (not recommended unless necessary).
- Verify network interface binding:
- If multiple NICs/VPNs exist, disable unused interfaces or specify the correct interface in tool settings (if available). Temporarily disable VPNs during discovery.
- Use compatibility mode:
- If the app is old, try Windows compatibility mode (Properties → Compatibility).
- Update the tool:
- If possible, upgrade to a newer official Ubiquiti discovery/management utility that bundles a modern runtime and supports current Windows 10 builds.
- Logs and diagnostic capture:
- Collect any log files or console output. For Java-based launches, run via command line to see stack traces:
java -jar discoverytool.jar
(adjust filename). 11. Reinstall network drivers:
- As a last resort, update/reinstall NIC drivers and reboot.
Best practices
- Run the latest supported management tool from the vendor when possible.
- Keep one compatible Java runtime installed for legacy tools; avoid global upgrades that remove compatibility.
- Use a dedicated management VLAN or isolated admin workstation for device discovery tasks.
- Maintain backups of device configs before mass changes.
If you want, I can:
- Provide exact commands to run discovery from a terminal given the tool file (tell me the filename).
- Suggest specific Java builds compatible with v2.5.1 (I can list versions).
UBNT Discovery Tool v2.5.1 and Java on Windows 10: A Comprehensive Guide
The UBNT Discovery Tool is a popular utility used to discover and configure Ubiquiti devices on a network. The latest version, v2.5.1, requires Java to run. In this article, we'll explore how to use the UBNT Discovery Tool v2.5.1 with Java on Windows 10.
What is UBNT Discovery Tool?
The UBNT Discovery Tool is a free utility developed by Ubiquiti Networks, Inc. that allows users to discover and configure their Ubiquiti devices, such as routers, switches, and access points, on a network. The tool scans the network for Ubiquiti devices and displays their IP addresses, MAC addresses, and other relevant information.
What's New in UBNT Discovery Tool v2.5.1?
The latest version of the UBNT Discovery Tool, v2.5.1, brings several improvements and bug fixes. Some of the key changes include:
- Improved device discovery and configuration
- Enhanced user interface
- Support for latest Ubiquiti devices
- Bug fixes and stability improvements
Java Requirements
The UBNT Discovery Tool v2.5.1 requires Java Runtime Environment (JRE) 8 or later to run. Java is a popular programming language that allows developers to create platform-independent applications. If you don't have Java installed on your Windows 10 machine, you'll need to download and install it before running the UBNT Discovery Tool.
Installing Java on Windows 10
To install Java on Windows 10, follow these steps:
- Go to the Oracle Java download page (https://www.oracle.com/java/technologies/javase-jre8-downloads.html)
- Click on the "Download" button next to "Java Runtime Environment (JRE) 8"
- Select the correct architecture (32-bit or 64-bit) that matches your Windows 10 installation
- Run the installer and follow the prompts to complete the installation
Running UBNT Discovery Tool v2.5.1 on Windows 10
Once you've installed Java, you can run the UBNT Discovery Tool v2.5.1 on Windows 10. Here's how:
- Download the UBNT Discovery Tool v2.5.1 from the Ubiquiti website (https://www.ubnt.com/download)
- Extract the downloaded zip file to a folder on your Windows 10 machine
- Navigate to the extracted folder and double-click on the "discoverytool.jar" file to run it
- If prompted, select the Java Runtime Environment (JRE) 8 or later from the list of installed Java versions
Troubleshooting Tips
If you encounter issues running the UBNT Discovery Tool v2.5.1 on Windows 10, here are some troubleshooting tips:
- Ensure that Java is installed and up-to-date on your Windows 10 machine
- Check that the UBNT Discovery Tool v2.5.1 is extracted to a folder on your local machine
- Run the tool as an administrator to ensure that it has the necessary permissions
Conclusion
The UBNT Discovery Tool v2.5.1 is a powerful utility for discovering and configuring Ubiquiti devices on a network. With Java installed on your Windows 10 machine, you can easily run the tool and manage your Ubiquiti devices. By following the steps outlined in this article, you'll be able to get started with the UBNT Discovery Tool v2.5.1 and take advantage of its features.
Alternative Method: Using the Tool on Windows 10 Without Direct Java
If the above steps seem daunting, there is a fallback: Use an older Java 8 Runtime exclusively for this tool, isolated from your system.
Requirement: Oracle Java 8 Update 202 (the last free version for commercial use, but fine for personal/lab).
- Download
jre-8u202-windows-x64.exefrom the Oracle archives. - Install to a custom folder, e.g.,
C:\Java8_UBNT. - Do not set it as system default.
- Modify batch script to point to this specific JRE’s
java.exe.
Warning: Java 8 has unpatched vulnerabilities. Only use this on an isolated network or air-gapped machine.
kanthariya sweta subhashchandra
Posted at 21:42h, 03 Septemberstudent use
Sanjana Sinha
Posted at 21:35h, 01 FebruaryI want know about c program