Java, C#, platforma NET, środowisko uruchomieniowe

Odpowiedz Nowy wątek
2011-09-01 21:10
0

Witam. Czy program napisany w Javie we wcześniej wersji uruchomi się jeśli na komputerze jest zainstalowana tylko najnowsza wersja Javy? Czy będzie tak samo jak w przypadku C# i platformy .NET, czyli program napisany dla wersji 2.0 nie uruchomi się, jeśli na komputerze zainstalowana jest tylko wersja .NET 4.0?

uruchomi się. - Azarien 2011-09-01 22:14

Pozostało 580 znaków

2011-09-01 21:51
0

W obydwu przypadkach powinien się uruchomić, no chyba że korzysta z jakichś przestarzałych (deprecated) funkcjnonalności wyrzuconych z nowych wersji środowisk uruchomieniowych, ale to raczej się nie zdarza.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
no z .NET to raczej fail'owa odpowiedź... - maciejmt 2011-09-01 21:59
Bo? .NET jest wstecznie kompatybilny. - Rev 2011-09-01 22:04
Nie bardziej niż Java. - Wibowit 2011-09-01 22:08

Pozostało 580 znaków

2011-09-01 22:21
0

Co do Javy to program napisany w starszej wersji Javy uruchomi się na nowszej wersji...
Z platforma .NET nie jest tak do końca... Program napisany i skompilowany pod wersję 2.0 nie uruchomi się na wersji 4.0.
Inna sprawą, że są aktualizacje zarówno np. do wersji 2.0 i 4.0...
Tutaj jest lista wszystkich wersji :
http://en.wikipedia.org/wiki/Listof.NET_Framework_versions

Java też ma takie wybryki. że program dla starszej wersji już się nie uruchomi na nowej. - Sarrus 2011-09-02 13:34
Tak, ale w Javie to jest nieszczęśliwy zbieg okoliczności, natomiast w .NET to jest "by design" - Krolik 2011-09-02 15:09

Pozostało 580 znaków

2011-09-01 22:25
0

Jeszcze jedno pytanie. Jakie są typowe zastosowania dla C# i Java? C# pewnie biznes, java aplikację mobilne.

Java często jest wykorzystywana po stronie serwera do obsługiwania serwisów internetowych. - [losowa nazwa] 2011-09-02 11:00

Pozostało 580 znaków

2011-09-01 22:29
0

Z tego co pamiętam to .NET od wersji 2.0 są kompatybilne, czyli słowem by działały wszystkie aplikacje napisane w .NET potrzeba .NET 1.1 i .NET 4.0. Z JVM nie wiem jak to jest.

Pozostało 580 znaków

2011-09-01 22:32
0

Do aplikacji mobilnych to raczej Java ME. Co do aplikacji biznesowych to oba języki się świetnie nadają... Aczkolwiek C# wydaje mi się być nieco bardziej przyjazny dla początkującego programisty...
Hmm a co chcesz pisać?

No tak - przecież Android SDK, BlackBerry, TotalCross to z pewnością nie są technologie mobilne. Java ME 128x128px forever! - havi 2011-09-02 04:56

Pozostało 580 znaków

2011-09-01 22:53
0

Kiedyś tak było (przynajmniej przed 4.0, ale chyba nie zostało zmienione), że poszczególne wersje środowiska uruchomieniowego .NET Frameworka nie są kompatybilne wstecz. I jest to zamierzone, bo mogą sobie egzystować równolegle w systemie.

Z jednym szczegółem - .NET 3.0 i 3.5 to "nakładki" na 2.0, tylko rozszerzające możliwości. Aplikacja napisana dla 2.0 zadziała na 3.5, ale aplikacja 3.5 nie zadziała na 2.0.
1.1 i 4.0 są poza klasyfikacją, niekompatybilne. Z drugiej jednak strony, program można sobie przekompilować dla nowszej wersji i możliwe, że zadziała bez modyfikacji. (1.0 nie dotykamy). Mogą też istnieć aplikacje działające na każdej wersji Frameworka, plus daje się jakoś konfigurować czy i na jakich wersjach aplikacja będzie działać.

Java ME to chyba w 2000 roku. Teraz jak już to raczej Android, gdzie pisze się bądź co bądź w Javie. Zarówno Java, jak i C# siedzą w zastosowaniach biznesowych, głęboko.

edytowany 1x, ostatnio: Ktos, 2011-09-01 22:56

Pozostało 580 znaków

2011-09-02 00:10
Rev
0

Ale żeście bzdur kompletnych o .NET powypisywali. Sprawdziliście chociaż?

KAŻDE runtime jest wstecznie kompatybilne.
Program napisany pod 1.0 można uruchomić na KAŻDYM Frameworku, na runtime 1.0, 1.1, 2.0 i 4 i tak dalej dla każdej kolejnej wersji.
W tym, program skompilowany pod .NET 3.0 i 3.5, o ILE nie używają dodatkowych bibliotek, które były dołączone dopiero w tych wersjach MOŻNA uruchomić na .NET Framework 2.0.

Można zainstalować wiele wersji frameworka na jednym systemie, bo zwyczajniej bezpieczniej jest uruchamiać program na runtime, dla którego został skompilowany. Jak mówi nam MSDN, jest możliwość, że aplikacja skompilowana pod starszy runtime w pewnych wypadkach może się zachować nieprzewidywalnie - np. przy zabawie refleksją i prywatnych pól klas czy na skutek jakiegoś wprowadzonego później bugfixa.
Jeżeli ktoś ma mało miejsca na dysku może zostawić sobie na dysku framework 4.0 i wszystkie aplikacje powinny działać w porządku.

A jak ktoś chce sam popróbować to może napisać sobie taki program:

Console.WriteLine("Aplikacja uruchomiona na runtime v" + Environment.Version.ToString(3));
Console.WriteLine("Aplikacja skompilowana o runtime " + Assembly.GetExecutingAssembly().ImageRuntimeVersion);

Skompilować go na kompilatorach z różnych frameworków (csc.exe) i dodać plik "nazwaprogramu.exe.config" o treści:

<?xml version="1.0"?>
<configuration><startup><supportedRuntime version="wersjaruntime"/></startup></configuration>

gdzie wersjaruntime to v1.1.4322, v2.0.50727 albo v4.0.30319. Runtime 1.0 nawet nie będziecie mieli, a może i 1.1 też. Wtedy domyślnie te programy uruchamia runtime o jedną wersję wyższy.


Pozostało 580 znaków

2011-09-02 10:19
0

@rev - nie masz racji. .NET 1.0 i 1.1 nie jest w pełni kompatybilny z .NET 2.0, niektóre programy napisanie w .NET 1.1 nie zadziałają w ogóle lub będą działać nieprawidłowo pod .NET 2.0 i nowszych. Z tego też powodu praktykuje się instalowanie .NET 1.1 obok najnowszej wersji frameworka, tak aby zapobiec problemom z aplikacjami napisanymi pod 1.1.

Lista breaking changes:
http://msdn.microsoft.com/en-us/netframework/aa497239.aspx

Pozostało 580 znaków

2011-09-02 11:50
0

Filozujecie: http://msdn.microsoft.com/en-us/library/ff602939.aspx


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2011-09-02 14:11
Rev
0

@AdamPL, no przecież nikt nie twierdzi, że pomiędzy różnymi wersjami frameworka nie ma żadnych zmian. Sam przecież o tym napisałem, sam Microsoft o tym wspomina. Trudno, żeby wszystkie runtime działały tak samo. Z resztą, nawet nie chodzi tutaj o uruchamianie skompilowanej aplikacji na innym runtime, jak byk tam stoi: They can also impact applications originally built against the 1.0 or 1.1 .NET Framework and then recompiled on the 2.0 .NET Framework.


Napisałeś, że każde runtime jest wstecznie kompatybilne, a nie jest, więc teraz nie czaruj. - AdamPL 2011-09-02 15:52

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0