From ea7820af8b0847d3bf82d684b603848e62f172b8 Mon Sep 17 00:00:00 2001 From: bryanesquivias <101609716+bryanesquivias@users.noreply.github.com> Date: Sat, 11 Feb 2023 23:36:20 -0800 Subject: [PATCH 1/2] Update README.txt Added table of contents Updated what is nailgun and benefits Added installation instructions for macOs and Linux. Removed bad link to "the nailgun website" Added link to original website QuickStart guide --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 77 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 88466bb..33fdf93 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,101 @@ nailgun ======= +This repository contains implementations of a nailgun client in Python and in C. [![Build status](https://circleci.com/gh/facebook/nailgun.svg?style=svg)](https://circleci.com/gh/facebook/nailgun) + +## Table of Contents +[What is nailgun?](#what-is-nailgun)
+[Benefits of nailgun?](#benefits-of-nailgun)
+[MacOS Build and Installation](#macos-build-and-installation)
+[Linux Build and Installation](#linux-build-and-installation)
+[How to run a java program](#how-to-run-a-java-program)
+[Other implementations](#other-implementations)
+[Legal](#legal)
+ + --- +What is nailgun? +---------------- +Nailgun is a client, protocol, and server for running Java programs from +the command line without incurring the JVM startup overhead.Programs run in the server (which is implemented in Java), and are +triggered by the client (written in C), which handles all I/O. + +**Note:** Nailgun is based on original code developed by Marty Lamb, you can find his original website here. +As of October 2017, the repository has been transferred to facebook and is being maintained and used by Buck team. Nailgun will remain available under the Apache license, version 2.0. -**Note:** Nailgun is based on original code developed by Marty Lamb. -In October, 2017, Marty transferred the repository to Facebook, where it is currently -maintained by Buck team. Nailgun will remain available under the Apache license, version 2.0. +Benefits of nailgun? +-------------------- +Elimanate JVM startup time completely and run all of your java apps in the same JVM called the nailgun server which only starts once. This gets rid of the slow startup times of the JVM everytime you want to run a program. --- +MacOS Build and Installation +---------------------- +To install nailgun on Mac: + +```scala +brew install nailgun +``` -Build and Installation +To start a background server: +```scala +$ brew install nailgun +$ java -jar /usr/local/Cellar/nailgun/0.9.1/libexec/nailgun-server-0.9.1.jar +NGServer 0.9.1 started on all interfaces, port 2113. +``` +Add the required jars +```scala +$ ng ng-cp /usr/local/Cellar/scala/2.12.2/libexec/lib/scala-library.jar +$ ng ng-cp s.jar +``` + +Linux Build and Installation ---------------------- +To install nailgun on Linux: -Nailgun is a client, protocol, and server for running Java programs from -the command line without incurring the JVM startup overhead. +```scala +sudo apt update +sudo apt install nailgun +``` -Programs run in the server (which is implemented in Java), and are -triggered by the client (written in C), which handles all I/O. +Using maven, from the project directory: +```scala +mvn clean install +``` -The server and examples are built using maven. From the project directory, -"mvn clean install" will do it. +The client is built using make. From the project directory, ' +```scala +make && sudo make install +``` +To create the windows client +you will additionally need to +```scala +make ng.exe +``` +--- +How to run a java program +---------------------- +By default Nailgun server runs on port **2113** -The client is built using make. From the project directory, -"make && sudo make install" will do it. To create the windows client -you will additionally need to "make ng.exe". +Assume you have a file HelloWorld.class in +```scala +/home/28041/ng-sample/com/testrun/HelloWorld.class +``` +run +```scala +ng ng-cp /home/28041/ng-sample +ng com.testrun.HelloWorld +``` -This repository contains implementations of a nailgun client in Python and in C. +For a more in depth guide go here -For additional client implementations in other languages, see: +Other implementations +---------------------- - [snailgun](https://github.com/jvican/snailgun), a client implementation written in Scala that compiles to native. - [railgun](https://github.com/timuralp/railgun), a client implementation written in Ruby. -For more information, see [the nailgun website](https://github.com/facebook/nailgun). License ------- From 56cb70ba9398cdd90917da61ca758a864590c3c4 Mon Sep 17 00:00:00 2001 From: Bryan Esquivias <101609716+bryanesquivias@users.noreply.github.com> Date: Wed, 14 Feb 2024 23:01:03 -0500 Subject: [PATCH 2/2] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 33fdf93..36d9425 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ nailgun + ======= + + This repository contains implementations of a nailgun client in Python and in C. [![Build status](https://circleci.com/gh/facebook/nailgun.svg?style=svg)](https://circleci.com/gh/facebook/nailgun)