Wszyscy moi użytkownicy mają system Windows. Niektóre z nich używają Linuksa lub Maca, ale jeśli tak, zazwyczaj są w stanie używać czegoś takiego jak Mono, Wine, Parallels lub dual-boot.
Mój zespół programistów (w tym ja) ma duże doświadczenie zarówno w pisaniu aplikacji Swing w Javie, jak i Windows Forms w C #. „Rozbudowany” oznacza, że opracowaliśmy i wysłaliśmy ponad trzy aplikacje w obu środowiskach wykonawczych. Aplikacje te są aplikacjami do analizy technicznej, łagodnymi dla interakcji z bazą danych, ale obciążającymi niestandardowy interfejs użytkownika i rozmiary zestawów danych.
Dochodzimy do momentu, w którym naprawdę chcemy podjąć decyzję, na której platformie należy się skupić, ponieważ jest to trudne do obsługi obu (jeśli pracujesz w Swing od pół roku, to zbyt wiele problemów aby ponownie przyzwyczaić się do formularzy Windows Forms i na odwrót) i chcemy, aby wszyscy w naszym zespole mogli pracować nad wszystkimi naszymi aplikacjami.
- Formularze Windows zazwyczaj wymagają mniej pracy, aby tworzyć rozpoznawalne aplikacje Windows. Przez wiele lat żadna ilość skórkowania i niestandardowych elementów sterujących w Javie nie rozwiązała tego problemu. Jednocześnie nigdy nie mieliśmy klienta, który nie mógłby korzystać z aplikacji Swing.
- Java miała znacznie bogatszy ekosystem pod względem bibliotek i automatycznych narzędzi do kompilacji, ale to się szybko zmienia (Java się nie psuje, chodzi o to, że .NET nadrabia zaległości).
- W rzadkich przypadkach, w których preferowana jest platforma wieloplatformowa, Java zdecydowanie wyprzedza platformę .NET. Mono jest cudowne, ale wciąż wymaga więcej pracy niż Java.
Jeśli wybierzemy .NET, możemy zacząć skupiać się na WPF, ale także zacząć używać F #. Jeśli wybierzemy Javę, możemy zacząć skupiać się na RCP, ale także zacząć używać Scali.
Czy ktoś musiał podjąć podobną decyzję? Jeśli tak, co to było i co miało na ciebie największy wpływ? Jakieś najważniejsze obawy, których mi brakuje?
(Uwaga: istnieją już podobne pytania na Programmers.SE, ale są albo niekonstruktywne, albo pod innym kątem).