It depends on what kind of problem you'd like to solve and how you'd like to solve it.
- JuMP is a modeling interface that lies between you and a dedicated solver. JuMP lets you easily specify your problem, sends that problem to the solver, and retrieves output for you. JuMP itself is not a solver. - Packages such as Optim.jl implement some optimization algorithms in pure Julia and thus do not require external solvers nor packages to interact with them. See juliaopt.org for an overview of the optimization packages and how they fit together. Which solver is best depends on many factors: primarily what kind of problem you want to solve, but also whether you need features like callbacks, what licenses you have access to, etc. The main page of juliaopt.org has a chart which can help you pick a a solver (probably to be used with JuMP) or a pure Julia optimization package.
