1 / 36

Java vs C# Michał Prządka Tomasz Nowak

Java vs C# Michał Prządka Tomasz Nowak. KONSPEKT. 1. Rys historyczny 2. Charakterystyka platformy Java i .NET 3. Hello world 4. Przegląd konstrukcji języków 5. Środowiska programistyczne 6. Rynki zbytu 7. Podsumowanie. Java: powstaje w 1990 – projekt Oak (Sun)

abedi
Download Presentation

Java vs C# Michał Prządka Tomasz Nowak

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java vs C#Michał Prządka Tomasz Nowak

  2. KONSPEKT 1. Rys historyczny 2. Charakterystyka platformy Java i .NET 3. Hello world 4. Przegląd konstrukcji języków 5. Środowiska programistyczne 6. Rynki zbytu 7. Podsumowanie

  3. Java: powstaje w 1990 – projekt Oak (Sun) Pierwsza dostępna implementacja: 1995 (Java 1.0) obecnie: Java 6 C#: powstaje w 2000 głowny architektem jest Anders Hejlsberg silne nawiązania do Javy, C++, Smalltalka i Delphi obecnie: C# 2.0 Sourceforge.net (21 stycznia 2007): # projektów w Javie: 21 831 # projektów w C#: 4 844 Rys historyczny

  4. Charakterystyka platformy Java i .NET

  5. JVM vs CLR

  6. Automatyczne zarządzanie pamięcią

  7. Wielosystemowość vs Monosystemowość

  8. Hello world - made byJava class Hello { public static void main(String[] args) { System.out.println("Hello world"); } }

  9. Przegląd konstrukcji języków

  10. Podobieństwa

  11. Składnia i słowa kluczowe Wszystko jest obiektem Brak metod globalnych Wielodziedziczenie Obsługa wyjątków Enumeratory Szablony Dokumentowanie kodu

  12. Różnice ! ( C# == JAVA )

  13. switch - case switch(foo) { case "A": Console.WriteLine("A seen"); break; case "B": case "C": Console.WriteLine("B or C seen"); break; case "D": Console.WriteLine("D seen"); case "E": Console.WriteLine("E seen"); break; }

  14. Jako katalog Zdefiniowana w osobnym pliku (w innym pakiecie/katalogu) Jako plik Pakiety package Company; import java.util.*; import Carnage4life.MyOtherClass; { public class MyClass { int x; void doStuff(){} } }

  15. Przestrzenie nazw using System; namespace Company { public class MyClass { int x; void doStuff(){} } namespace Carnage4life { public class MyOtherClass { int y; void doOtherStuff(){} public static void Main(string[] args) { Console.WriteLine("Hey, I can nest namespaces"); } } } …

  16. Metody wirtualne publicclass Parent { public void DoStuff(string str) { Console.WriteLine("In Parent.DoStuff: " + str); } } public class Child: Parent { public void DoStuff(string str) { Console.WriteLine("In Child.DoStuff: " + str); } } Child ch = new Child(); ch.DoStuff("Test"); ((Parent) ch).DoStuff("Second Test");

  17. Wish you were here ( czyli czego brakuje w Javie )

  18. Parametry ref i out public static void ChangeMe(out string s) { s = "Changed"; } public static void Swap(ref int x, ref int y) { int z = x; x = y; y = z; } public static void Main(string[] args) { int a = 5, b = 10; string s; Swap(ref a, ref b); ChangeMe(out s); Console.WriteLine("a := " + a + ", b := " + b + ", s = " + s); }

  19. Włączenie/wyłączenie sprawdzania poprawności public static void Main(string[ ] args) { int num = 5000; byte a = (byte) num; checked { byte b = (byte) num; } unchecked { byte c = (byte) num; } }

  20. Właściwości class Woman … private int age; public int Age { get { return age - 10; } set { age = value; } } … w.Age = 35; Console.Writeln( w.Age );

  21. Indeksatory publicclass Stack { public object this[int index] { get { return GetNode(index).Value; } set { GetNode(index).Value = value; } } … } Stack s= new Stack(); … s[0]=10; Console.WriteLine(s[0]);

  22. Operatory class MyNumber { private int value; public MyNumber(int value) { this.value = value; } public static MyNumber operator+(MyNumber n1, MyNumber n2) { return new MyNumber(n1.value + n2.value); } … }

  23. Wskaźniki int[] array = {9, 1, 3, 6, 11, 99, 37, 17, 0, 12}; fixed( int* iptr = array ) { Sort(iptr, array.Length); }

  24. Wskaźniki public staticunsafe void Swap(int* a, int*b) { int temp = *a; *a = *b; *b = temp; } public staticunsafe void Sort(int* array, int size) { for(int i= 0; i < size - 1; i++) for(int j = i + 1; j < size; j++) if(array[i] > array[j]) Swap(&array[i], &array[j]); }

  25. Struktury struct Point { public int x; public int y; public Point( int x, int y) { this.x = x; this.y = y; } public static void Main(string[] args) { Point start = new Point(5, 9); … } …

  26. Zdarzenia, delegety class EvenNumberEvent : EventArgs { internal int number; public EvenNumberEvent(int number) : base() { this.number = number; } }

  27. class Publisher { public delegate void EvenNumberSeenHandler(object sender, EventArgs e); public event EvenNumberSeenHandler EvenNumHandler; protected void OnEvenNumberSeen(int num) { if(EvenNumHandler!= null) EvenNumHandler(this, new EvenNumberEvent(num)); } public void RunNumbers() { Random r = new Random((int) DateTime.Now.Ticks); for(int i=0; i < 20; i++) { int current = (int) r.Next(20); Console.WriteLine("Current number is:" + current); if((current % 2) == 0) OnEvenNumberSeen(current); } } }

  28. public class EventTest { public static void EventHandler(object sender, EventArgs e) { Console.WriteLine("\t\tEven Number Seen:" + ((EvenNumberEvent)e).number); } public static void Main(string[] args) { Publisher pub = new Publisher(); pub.EvenNumHandler += new Publisher.EvenNumberSeenHandler(EventHandler); pub.RunNumbers(); pub.EvenNumHandler -= new Publisher.EvenNumberSeenHandler(EventHandler); } }

  29. Wish you were here ( czyli czego brakuje w C# )

  30. Button buttonC = new Button("C"); buttonC.addMouseListener(new MouseListener() { public void windowClosing(WindowEvent e){ System.out.println( "Close button clicked"); System.exit(0); }//end windowClosing }//end class definition );//end addWindowListener Klasy anonimowe (w C# - metody anonimowe) To klasy lokalne, które nie mają nazwy...

  31. public void readFile() throws IOException { File f = new ... ... ... } Wyjątki typu checked Wyjątki, które muszą być obsłużone – albo przez try i catch albo przez throws w sygnaturze metody – np. IOException Przykłady wyjątków nie-checked – wszystkie typu RuntimeException – np. NullPointerException, ArrayOutOfBounds

  32. Rynki zbytu • Desktop • Web • Mobile

  33. Java Środowiska programistyczne C#

  34. Last but not least

  35. Bibliografia • http://www.25hoursaday.com/CsharpVsJava.html • http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java

  36. Podsumowanie

More Related