Убогость или приемлемое кроссплатформенное решение?
Я просто с SDL имел дело и знаю на что оно способно.
SDL прекрасно подходит для кроссплатформенной игры например. Для кроссплатформенного эмулятора (виртуальной машины) - тоже прекрасно (см. qemu, dosbox и так далее). Вполне сойдет для видеоплеера (хотя тут уже с натяжками). Абсолютно не годится для IDE и тем более для BB (ведь он не только IDE, но и то на базе чего затем строится конечное приложение).
Поясню: в SDL у тебя ровно одно окно. Больше одного окна (в терминах OS) SDL не умеет. Более того, оно и с этим то окном весьма неумело обращается. Все что SDL умеет делать (в плане графики) - это рисовать в этом самом окне, точнее работать с видеопамятью (а функции рисования примитивов - изволь реализовывать сам, либо используй сторонние либы). И делает это хорошо.
А зачем нам вообще что-то кроме одного окна (в терминах OS, понятно что своих окошек мы внутри можем нарисовать ровно столько сколько захотим и OS про них ничего знать не будет)? А затем. Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок. Вообще многооконность вещь весьма полезная. Я видел помнится коммерческий графический редактор (аля фотошоп) реализованный целиком на SDL - это смотрелось ужасно. Вроде на скриншотах ничего, но пользоваться не приятно. Он крайне чужд любой системе.
В swing'e (стандартная gui-либа для java) есть разделение - есть тяжеловесные окна - это те окна которые существуют в терминах OS, и легковесные окна - которые мы полностью рисуем сами и OS про них ничего не знает. Одно тяжеловесное окно может содержать одно или несколько наших окон/граф. компонентов/виджетов (любой виджет это, очевидно, окно). Специально для тяжеловесных окон в swing'e есть тоненькая абстрактная прослойка над механизмами данной конкретной OS - awt. Она реализует (точнее оборачивает системные) кроссплатформенно ровно те немногочисленные функции, которые swing'у нужны от оконной системы. Например swing'у не нужны нативные системные контролы (кнопка там, чекбокс и так далее) - он сам рисует свои на базе легковесных окон. (хотя, справедливости ради, следует заметить что в awt они есть - это осталось с тех времен когда не было swing'a и все пытались сделать чисто на awt, без легковесных окон).
Таким образом, для построения кроссплатформенной гуйной либы тоже нужно реализовать тоже что-то вроде облегченного AWT для тяжеловесных окон разных систем. А уже потом внутри рисовать красивый (или не очень) гуй.
И да, swing работает во всех распространенных системах. Перекомпиляция программы не требуется.
PS. Кроме того, SDL изначально затачивался под игры. Там скорость много важнее надежности.