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.biojava
package - Launched in 2002 with six major releases covering more than 11 Java releases
A few equivalent applications between BioJulia and BioJava:
Application | BioJulia packages | BioJava modules |
---|---|---|
Input/Output | FASTX, XAM, BigWig,... | nbio.genome.io.fastq , nbio.ontology.obo ,... |
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 (assignment as a statement) |
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) |
Extensive metaprogramming (Lisp-like macros, homoiconicity,...) | Less extensive metaprogramming (reflection, annotations,...) |
Included default package manager | No default package manager (dependency/build management tools include Maven, Gradle,...) |
Single implementation available (JuliaLang) | Multiple implementations available (OpenJDK, GraalVM,...) |
To transition from Java to Julia:
- Use JavaCall.jl to seamlessly integrate Java code into your Julia project
- See Running External Programs in the Julia manual for running Java scripts or other programs from Julia