Z PhoneGapem też bywają problemy. Na przykład Windows nie obsługuje poprawnie pewnych rzeczy z JS które obsługuje Android bez problemów. CO rpawda to ze względów bezpieczeństwa, więc uzasadnienie jakieś jest.
Problemów jest masa - zarówno z instalacją i konfiguracją środowiska, jak i tworzeniem kodu. To w końcu JS, czyli świat bez stabilnych technologii i tysiące walczących ze sobą wzajemnie biblioteczek.
Ja też się dobrze nie znam na Xamarinie i nie słyszałem żadnej opinii na jego temat od osób, które go używały.
Z tego co wiem, to ma np. od lat niezałatane błędy związane z security.
Wiem, że Microsoft ostatnio mocno promuje Xamarina, więc wydaje mi się, że nie jest zły. Microsoftowi można wiele zarzucić odnośnie Windowsów, Internet Explorera, ale trzeba przyznać, że narzędzia dla programistów mają jedne z najlepszych na rynku. Dlatego wydaje mi się, że nie promowaliby tak Xamarina gdyby to był totalny badziew.
Co do narzędzi dla programistów (IDE) to się zgadzam. Ale niektóre ich technologie i biblioteki są źle zaprojektowane, niewydajne albo kompletnie bez sensu. Zdarzało im się też równolegle rozwijać dwie technologie, by potem pozostawić tylko jedną.
Teraz zresztą promują zarówno Xamarina jak i Cordovę (obie są dostępne w VS 2015), ciekawe czy obie przetrwają.
A odnośnie PhoneGap, Cordova, Kendo Mobile UI, itp., to zastanawia mnie który programista lubi programować w JavaScript? Ja najbardziej lubię C#, ale gdybym miał do wyboru Java vs JavaScript albo nawet Delphi vs JavaScript albo nawet C++ vs JavaScript, to zdecydowanie wolałbym Javę, Delphi i C++ niż JavaScript. Ale może te frameworki pomimo tego że programuje się w nich za pomocą JavaScriptu nie są aż tak okropne?
Jeśli jest się frontendowcem, to pewno łatwiej pisać w JS niż serwerowym języku. Cordova daje tyle, że piszesz teoretycznie jedną aplikację, która uruchomi się na każdej platformie. I pewno tak by było, gdyby się pisało w czystym JS, ale jak chce się używać jakichś bibliotek/frameworków, to już tak fajnie nie jest, bo zawsze pojawiają się jakieś problemy z niekompatybilnością. A używać trzeba, bo pisanie w czystym JS to mordęga.