Вам в технические писатели))
* Вы должны понимать, что freelance - в основном проекты на одного человека, максимум - несколько.
* На java даже драйвера и приложения для sim-карт пишут, имею ввиду, что спектр направлений деятельности на этом языке - огромен. По этому тыкать пальцем в небо: "учи такой-то фреймворк" ка минимум не корректно. Для начала необходимо определиться с областью.
* Security Programming - вообще говоря нигде не помешает, тут все зависит опять же от области применения, например, у web-а есть золотое правило: "пользователь всегда врет, даже если он этого не знает - все равно врет". В случае, если вы делаете консольную утилиту, например конвертер чего-нить, тут требования будут совсем другие.
* На счет рынка freelance - в чем проблема то? Зайдите на oDesk / fl / любая_другая_freelance _биржа и посмотрите.
Но есть нюанс: java все же mainstream язык, и чаще всего используется не на freelance проектах.
Фриланс на самом деле сложнее, чем стационарная работа, потому как требует серьезной самодисциплины, так же без команды - расти будете медленнее. Сама работа - не постоянна, конечно вы можете сорвать куш в 1 месяц, но рассчитывать на то, что так будет постоянно - как минимум глупо.
Так что подумайте на тем, что бы дотянуть знания до стажера и работать не как фрилансер.