Welcome to the Julia Programming Language!

Experience blazing fast computing and a vibrant ecosystem.

Learn More »

Check out our awesome new features!         Get ready to be amazed!    

Ecosystem Overview

Julia makes it easy to build and deploy applications for a wide range of tasks.

CategoryDescription
Build, Deploy or Embed Your CodeWrite web UIs with Dash.jl and Genie.jl or native UIs with Gtk4.jl. Pull data from a variety of databases. Build shared libraries and executables with PackageCompiler. Deploy on a webserver with HTTP.jl or embedded devices. Powerful shell integration make it easy to managing other processes.
Foreign Function InterfacesJulia has foreign function interfaces for C, Fortran, C++, Python, R, Java, Mathematica, Matlab, and many other languages. Julia can also be embedded in other programs through its embedding API. Julia's PackageCompiler makes it possible to build binaries from Julia programs that can be integrated into larger projects. Python programs can call Julia using juliacall. R programs can do the same with R's JuliaCall, which is demonstrated by calling MixedModels.jl from R. Mathematica supports calling Julia through its External Evaluation System.

Parallel Computing

Julia is designed for parallelism, and provides built-in primitives for parallel computing at every level.

FeatureDetails
Instruction Level ParallelismSupported
Multi-threadingSupported
GPU ComputingSupported
Distributed ComputingSupported

The Celeste.jl project achieved 1.5 PetaFLOP/s on the Cori supercomputer at NERSC using 650,000 cores.

The Julia compiler can also generate native code for GPUs. Packages such as DistributedArrays.jl and Dagger.jl provide higher levels of abstraction for parallelism. Distributed Linear Algebra is provided by packages like Elemental.jl and TSVD.jl. MPI style parallelism is also available through MPI.jl.

Machine Learning

Julia offers a rich ecosystem for machine learning.

PackageDescription
MLJ.jlProvides a unified interface to common machine learning algorithms, which include generalized linear models, decision trees, and clustering.
Flux.jl & Lux.jlPowerful packages for Deep Learning.
Metalhead.jl, ObjectDetector.jl, TextAnalysis.jlProvide ready to use pre-trained models for common tasks.
AlphaZero.jlProvides a high performance implementation of the reinforcement learning algorithms from AlphaZero.
Turing.jlA best in class package for probabilistic programming.

Scientific Computing

Julia is designed from the ground up to be very good at numerical and scientific computing.

Example ToolsCategory
DifferentialEquations.jlDifferential Equations
JuMP.jl & Optimization.jlOptimization
Krylov.jl, LinearSolve.jlIterative Linear Solvers
AbstractFFTs.jlFast Fourier Transforms

General purpose simulation frameworks are available for Scientific Machine Learning, Quantum computing and much more.

Julia also offers a number of domain-specific ecosystems, such as in biology (BioJulia), operations research (JuMP Dev), image processing (JuliaImages), quantum physics (QuantumBFS), nonlinear dynamics (JuliaDynamics), quantitative economics (QuantEcon), astronomy (JuliaAstro) and ecology (EcoJulia).

With a set of highly enthusiastic developers and maintainers, the scientific ecosystem in Julia continues to grow rapidly.

Data Science

Julia has a comprehensive data science ecosystem.

PackageDescription
DataFrames.jlTo work with datasets, and perform common data manipulations.
CSV.jlA fast multi-threaded package to read CSV files and integration with the Arrow ecosystem is in the works with Arrow.jl.
OnlineStats.jlOnline computations on streaming data
The QueryverseProvides query, file IO and visualization functionality.
JuliaGraphsTo work with combinatorial data.

Julia can work with almost all databases using JDBC.jl and ODBC.jl drivers. In addition, it also integrates with the Spark ecosystem through Spark.jl.

Visualization

Data visualization has a complicated history. Plotting software makes trade-offs between features and simplicity, speed and beauty, and a static and dynamic interface.

Some packages make a display and never change it, while others make updates in real-time.

PackageDescription
Plots.jlA visualization interface and toolset. It provides a common API across various backends, like GR.jl, PyPlot.jl, and PlotlyJS.jl.
Makie.jlA sophisticated package for complex graphics and animations.
Gadfly.jlUsers who are used to "grammar of graphics" plotting APIs should take a look at Gadfly.jl.
VegaLite.jlProvides the Vega-Lite grammar of interactive graphics interface as a Julia package.
UnicodePlots.jlFor those who do not wish to leave the comfort of the terminal.

Lorenz Attractor in Julia

                  function fill_twos!(a)
                      for i=1:length(a)
                          a[i] = 2
                      end
                  end

                  function fast_strange_twos(n)
                      a = Array(randbool() ? Int64 : Float64, n)
                      fill_twos!(a)
                      return a
                  end
                  
Under Construction New! Generate your own 90s page here! Under Construction