Can we create job configurations from code

Hi,

I want to create jobs from code instead from UI.
Should I use Job DSL or jenkins job builder

or is there another way to version control this?

I am after fully portable jenkins.

Any suggestions ?