Setup Preconditions

In order to run an L2J server the following will be necassary:

Hardware
Minimum specifications:

CPU: dual core 2+ GHz

RAM: 2+ GB of DDR2/3

HDD: 10+ GB of free space for database and some logs (not counting the already set up server)

Network bandwidth: 2-3 mbps up/down

this will hold approximately 100-200 players.

Recommended specifications:

CPU: quad core 2+ GHz

RAM: 4+ GB of DDR2/3

HDD: 50+ GB (lots of players frequently online and lots of logs will fill this up in a moderate amount of time, so be sure you can get more free space in case you need to. Or just delete old logs)

Network bandwidth: 10+ mbps up/down

Many servers use 10k or 15k RPM WD Raptor or SAS hard drives; they are more expensive, but give a huge performance boost (they do make terrible noise (it's normal), but servers don't usually care about that).

Also, as of late, using SSD hard drives for server hosting has been becoming increasingly popular. However, SSDs have a serious weakness, and that is that they can't handle much writing (it doesn't take much for a cell in an SSD memory chip to die if it is being frequently written to; that depends on the memory type though - SLC (Single Level Cell) flash is the best for write endurance, MLC comes second). Reading performance is really good, but L2J server writes much more than it reads, so an SSD is not a particularly good choice, unless you are ok with a few server crashes and have enough money to purchase new disks once the previous ones die/become faulty (and SSDs aren't exactly cheap).

Software
1) Java 

Its crucial that You have Java installed on the machine that will host the server(s).

Java can be obtained at the following address: http://www.oracle.com/technetwork/java/javase/downloads/index.html

To run the L2J server, JRE will be enough. To compile it, You will need JDK. Both can be obtained at the same adress.

2) Database host

The most popular database server for L2J (and many other things) is MySQL. MySQL is also free (at least the community version), but there are more 'advanced' database servers such as Microsft SQL Server or PostgreSQL that can host your data tables. However, the latter ones are not natively supported by L2J (yet), so you'll have to make A LOT of changes to make L2J work with them.

3) Database Administration Software

Many people use Navicat for MySQL (currently only trial or paid versions available), HeidiSQL or PhpMyAdmin (requires a webserver with PHP installed and also has several limitations since it is a web-based tool) for this purpose, but there are lots of programs that allow You to do that. MySQL has it's own set of GUI tools to manage databases - it's called MySQL Workbench (there is also an older version - a predecessor of sorts - called MySQL GUI Tools. It is much more stable than the Workbench and still works with the latest MySQL server). It's essential that You have such a program, otherwise You won't be able to do much about Your databases (unless You're a console geek).

4) L2J Software

In order to open an L2J server you will need the L2J server software, which can be obtained from Nightlies or SVN.

Nightlies are the already compiled server files, the more "newbie-friendly" version. You only need to download, unzip, set up the configuration and run it, while the SVN repository contains the source code of the server, which is necassary for more serious modification/upgrading of the server, and also makes it easier to keep Your configuration options and customs consistent (copy/pasting config files and scripts can make a serious mess).

The nightlies (compiled server builds) can be downloaded from here: L2J server nightly builds.

''You should probably use these first to get to know the available features and settings. Later on, when You're comfortable with these and/or want to add some customs to Your server, You can switch to using the sources.''

The SVN links for the latest sources can be found here: trunk/beta SVN links.

''Use the beta branch with caution; it might contain some experimental/untested features and unknown bugs, thus is not 100% safe for a live server. The trunk is said to be stable and ready for production use.''

The SVN links of L2J server code for the previous chronicles can be found here: legacy L2J server code branches.

''Support for the legacy branches is limited because few people use them and they are no longer maintained (i.e. no updates for them unless someone submits a valuable bugfix or something similar). There are active forks (read: private projects) of those branches out there that have done a great deal of work to improve these old versions; however, most of them are closed-source.''

There's a guide available on how to set up the L2J-prefered development environment and download L2J code to work with it. It can be found here: Eclipse setup.

The following link contains a more or less accurate explanation on how to get L2J server files through both ways, however it is the oldest and least updated one, so some things might not match: L2JServer Wiki