VB.NET C# 使いなんだがマルチプラットフォームに興味があるのでJava使ってみたいんだけど・・・・気になる点が2つほど

1.
LinuxとWindowsで基本的なコントロール(テキストボックスとかリストビューとかグリッド)使ってDBのデータIOを行うアプリを作りたいんだけど
LinuxとWindowsは意識せずにまったく同じソースでいいの?
それともVMごとにコンパイルオプションを指定するような感じになるの?

2.
.NETと比べてUIのモッサリ感はどう?
.NETのモッサリ感は我慢できるレベルだという定義で
内部処理の高速性は気にしないものとします。