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
packageLaunched 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