BioJava (Java) ​
BioJava is a biological data processing library written in the Java programming language
BioJava tooling is distributed via multiple classes within the same
org.biojavapackageLaunched in 2002 with six major releases covering more than 11 Java releases
A few similar applications between BioJulia and BioJava:
| Application | BioJulia packages | BioJava modules |
|---|---|---|
| Input/Output | FASTX, XAM, BigWig, etc. | nbio.genome.io.fastq, nbio.ontology.obo, etc. |
| Sequence alignment | BioSequences, BioAlignments | nbio.sequence, nbio.alignment |
| Macromolecular structures | BioStructures | nbio.structure |
A few package/ecosystem equivalents between Julia and Java:
| Application | Julia | Java |
|---|---|---|
| Data manipulation/analysis | DataFrames, CSV, Query | Tablesaw |
| Plotting/visualization | Plots, Makie, TidierPlots | JFreeChart, Jzy3d |
| Statistical analysis | Statistics, HypothesisTests | Statistics (Apache Commons), NM Dev |
| Machine learning | Flux, SciML, MLJ | Java-ML, Neuroph |
| Numerical mathematics | LinearAlgebra | NM Dev |
| Notebook/report generator | IJulia, Pluto | IJava |
| Web applications | Genie, Franklin | Grails, Javalin |
A few notable differences between Julia and Java:
| Julia | Java |
|---|---|
| High-level, general-purpose compiled language | High-level, object-oriented, two-step (compiled and interpreted) language |
| Expression-based (statements yield a value) | Statement-based (statements don't always yield a value) |
| Dynamically typed with multiple dispatch and optional type annotations | Statically typed with required type declarations |
| Built-in parallelism via threads, coroutines (Tasks) | Built-in parallelism via threads, streams, fibers (Project Loom) |
| Lisp-like (homoiconic, macro-based) metaprogramming | Reflection-based runtime metaprogramming |
| Included default package manager | No default package manager (dependency/build management tools include Maven, Gradle, etc.) |
| Single implementation available (JuliaLang) | Multiple implementations available (OpenJDK, GraalVM, etc.) |
To transition from Java to Julia:
Use JavaCall.jl to seamlessly integrate Java code into your Julia project
Consult the Running External Programs section in the Julia manual for running Java scripts or other programs from Julia