А у них видимо и запись, и преверификация, и сборкаДа, но компилятор ясен-пончик не собирает в .jar.
Например, как делается программа с твоего кода в моем редакторе:
1. ты пишешь код...
2. жмешь собрать...
3. твой исходник проходит через препроцессор который удаляет комменты и подключает директиву I (препроцессор вообще левый, отношения к мп не имеет, вроде под делфи

4. готовый файл отдается компилятору, который делает из него class, и возвращает мне ошибки если они есть, а также названия модулей/либ которые используются
5. если подключаемые модули есть, я по-очереди посылаю их в пункт 3

6. потом все это готовое дело пакуется тебе в jar'ку вместе с ресурсами и манифестом :3
А о портировании компилятора, так как это компилятор, он не должен быть привязан к какой-то ос, + си код, так что возможно и потеть там сильно не надо
