base on JRuby, an implementation of Ruby on the JVM # JRuby - an implementation of the Ruby language on the JVM
Master: [![JRuby CI](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg)](https://github.com/jruby/jruby/actions/workflows/ci.yml), [![JRuby CI (Windows)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml)
9.3 branch: [![JRuby CI](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg?branch=jruby-9.3)](https://github.com/jruby/jruby/actions/workflows/ci.yml), [![JRuby CI (Windows)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg?branch=jruby-9.3)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml)
## About
JRuby is an implementation of the [Ruby language](http://www.ruby-lang.org)
using the JVM.
It aims to be a complete, correct and fast implementation of Ruby, at the same
time as providing powerful new features such as concurrency without a
[global-interpreter-lock](http://en.wikipedia.org/wiki/Global_Interpreter_Lock),
true parallelism, and tight integration to the Java language to allow you to
use Java classes in your Ruby program and to allow JRuby to be embedded into a
Java application.
You can use JRuby simply as a faster version of Ruby, you can use it to run Ruby
on the JVM and access powerful JVM libraries such as highly tuned concurrency
primitives, you can use it to embed Ruby as a scripting language in your Java
program, or many other possibilities.
We're a welcoming community - you can talk to us on [#jruby on Libera](https://libera.chat/).
There are core team members in the EU and US time zones.
Visit the [JRuby website](https://www.jruby.org/) and the [JRuby wiki](https://github.com/jruby/jruby/wiki)
for more information.
## Getting JRuby
To run JRuby you will need a JRE (the Java VM runtime environment) version 8 or higher.
Your operating system may provide a JRE and JRuby in a package manager, but you may find that this
version is very old.
An alternative is to use one of the [Ruby version managers](https://www.ruby-lang.org/en/documentation/installation/#managers).
For [`rbenv`](https://github.com/sstephenson/rbenv) you will need the
[`ruby-build`](https://github.com/sstephenson/ruby-build) plugin. You may find that your system
package manager can provide these. To see which versions of JRuby are available you should run:
```
$ rbenv install jruby
```
Note: if you do not regularly git update rbenv this list of versions may be out of date.
We recommend always selecting the latest version of JRuby from the list.
You can install that particular version (9.2.13.0 is just for illustration):
```
$ rbenv install jruby-9.2.13.0
```
For [`rvm`](https://rvm.io) you can simply do:
```
$ rvm install jruby
```
Using [`Homebrew`](https://brew.sh/) works too:
```
$ brew install jruby
```
You can also [download packages from the JRuby website](https://www.jruby.org/download) that
you can unpack and run in place.
## Building JRuby
See [BUILDING](BUILDING.md) for information about prerequisites, how to compile JRuby from source
and how to test it.
## Authors
Stefan Matthias Aust, Anders Bengtsson, Geert Bevin, Ola Bini,
Piergiuliano Bossi, Johannes Brodwall, Rocky Burt, Paul Butcher,
Benoit Cerrina, Wyss Clemens, David Corbin, Benoit Daloze, Thomas E Enebo,
Robert Feldt, Chad Fowler, Russ Freeman, Joey Gibson, Kiel Hodges,
Xandy Johnson, Kelvin Liu, Kevin Menard, Alan Moore, Akinori Musha,
Charles Nutter, Takashi Okamoto, Jan Arne Petersen, Tobias Reif, David Saff,
Subramanya Sastry, Chris Seaton, Nick Sieger, Ed Sinjiashvili, Vladimir Sizikov,
Daiki Ueno, Matthias Veit, Jason Voegele, Sergey Yevtushenko, Robert Yokota,
and many gracious contributors from the community.
JRuby uses code generously shared by the creator of the Ruby language,
Yukihiro Matsumoto <
[email protected]>.
Project Contact: Thomas E Enebo <
[email protected]>
## License
JRuby is licensed under a tri EPL/GPL/LGPL license. You can use it,
redistribute it and/or modify it under the terms of the:
Eclipse Public License version 2.0
OR
GNU General Public License version 2
OR
GNU Lesser General Public License version 2.1
Some components have other licenses and copyright. See the [COPYING](COPYING)
file for more specifics.
", Assign "at most 3 tags" to the expected json: {"id":"3801","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"