Bazy danych w NetBeans

0

Witam serdecznie! Chcę stworzyć aplikację desktopową w Javie, która będzie korzystała z bazy danych- pliku lokalnego lub bazy SQL. Ciekawym rozwiązaniem wydaje mi się format XML. Pierwsze pytanie brzmi: jakie elementy (węzły) muszę dodać w pliku XML, aby wyświetlać i dodawać rekordy? Chwilowo widzę tylko poszczególne rekordy, a nie węzły. Proszę o przykład struktury najprostszej bazy XML, zawierającej pola: imię i nazwisko. Pozdrawiam!

0

Do lokalnej bazy danych polecam SQLite, nie ma co się użerać z parsowaniem XML'ów. Dodam, że podobno aplikację napisaną z użyciem SQLite można później łatwo przenieść na "normalne" bazy danych.

Wtrącając swoje 3 grosze to polecałbym użycie języka Python zamiast Javy - dużej szybkości i tak nie potrzebujesz do aplikacji bazodanowej, a w Python'ie łatwiej się pisze aplikacje. No chyba, że już długo siedzisz w Javie, a nie znasz Python'a, to pewnie szybciej przyjdzie Ci używać tych narzędzi, które już znasz ;)

0

Dziękuję za sugestię. Zainstalowałem sobie Monkey Studio i Pythona 3.1.2, ale jakoś nie chce mi ten zestaw działać. Do tej pory pisałem w Delphi i nie ma dla mnie znaczenia, czy przesiądę się na Javę, czy Pythona- chcę po prostu pisać programy bazodanowe. A chwilowo sytuacja wygląda tak: uruchamiam Pythona, Monkey Studio, tworzę GUI mojego programu i przy próbie uruchomienia (menu Interpreter->Start) otrzymuję komunikat: "The process failed do start. Either the invoked program is missing, or you may have insufficient permissions to invoke the program". Poproszę o wyjaśnienie, co robię źle. Pozdrawiam!

0

Dla mnie Monkey Studio to dość egzotyczna nazwa programu, raport błędu też dziwny. Ja pod Linuksem aplikacje Python'owe piszę korzystając z Geany IDE. Jeśli dopiero zaczynasz z Python'em i to pod Windows'em to ściągnij portable Python'a - http://www.portablepython.com/ - masz tam dołączone IDE o nazwie PyScripter i raczej nie powinno być problemów z pisaniem programów ;)
Jeśli Ci to pomoże to napisane skrypty Python'a możesz uruchamiać binarką (zazwyczaj python.exe).

0

Jeśli zdecydujesz się na Javę to polecam przejrzeć:
http://www.h2database.com/html/main.html
http://hsqldb.org/
Czyste Javowe bazy danych, wystarczy dokleić JARa i jazda :)

A samodzielne środowisko uruchomieniowe Javy jest bardziej popularne od Pythona.

Poza tym na JVM jest nie tylko Java, jest też Scala, Jython, JRuby, Clojure, Jaskell, etc

0
donkey7 napisał(a)

A samodzielne środowisko uruchomieniowe Javy jest bardziej popularne od Pythona.

Bardziej popularne nie znaczy lepsze/wygodniejsze itp. ;)
Przykłady:

  • Windows
  • Gadu-Gadu
  • Internet Explorer
    :D
    Python jest dość intuicyjny, pisząc w Javie trzeba mieć narzędzie rzędu NetBeans'a żeby połapać się w tym wszystkim (metody, itp.), przez co Java jest toporna i ciężka w obsłudze. Jak uruchamiam skrypt Python'a to od razu widzę efekt. W Javie nawet na najprostszy hello world trzeba poczekać aż się przetworzy to wszystko :P
0

Mnie odrzucają języki luźno typowane. Dużo mniej błędów jest wyłapywane przy kompilacji, dużo gorsze podpowiedzi. Wolę taką Scalę. Kodu wcale nie ma dużo więcej niż w Pythonie a jest mocno typowana.

Poza tym czysto Pythonowe bazki są raczej mało wydajne, a przez doklejanie natywnych libek trochę spada przenośność i kompatybilność.

Zainstaluj sobie Scalę i odpal REPL (interaktywny interpreter). Masz normalną konsolkę w której możesz wpisywać kod Scali i od razu dostajesz wyniki.

0

3 języki do wyboru, coraz ciekawiej ;-) Może sprecyzuję moje oczekiwania: chciałbym móc tworzyć aplikacje okienkowe i łączyć się z bazami danych bez zbędnych ceregieli. Włączyć IDE, narysować formę z komponentami, podpiąć pod bazę, napisać kod- i tyle. Oczywiście, miło byłoby kompilować do .exe lub takiego formatu, żeby na innym komputerze nie trzeba było czegoś doinstalowywać, aby mój program działał. Rzut oka na wymienione powyżej oprogramowanie daje pewne odczucie rozgardiaszu- może to nadmiar języków no i konieczność doinstalowywania dodatkowych elementów. Przed chwilą Zainstalowałem sobie Lazarusa i usiłując podpiąć obsługę SQL doinstalowałem Firebirda i Zeosa, ale gryzą się ze sobą i baza nie działa. Na popularności języka zbytnio mi nie zależy- ważne, aby można było nauczyć się go w naturalny sposób :-D Tak więc, jakie macie dalsze propozycje? Pozdrawiam i dziękuję za posty!

0

Myślę, że popularność środowiska uruchomieniowego ma znaczenie. Z dużo większym prawdopodobieństwem losowy użytkownik posiada JRE niż niewbudowanego Pythona.

Scala wymaga znajomości Javy jako prerekwizytu, jako że i tak trzeba z jakichś tam Javowych klas korzystać. Mimo to gorąco polecam.

Dodatkowo, NetBeans posiada graficzny edytor GUI, nie wiem jak jest na tym polu w Pythonie.

Poza tym Delphi, Java i Scala (no i np Clojure, ale to już abstrakcja) są statycznie typowane, w odróżnieniu od Rubyego, Pythona czy PHP. Delphi, Java i Scala są też językami kompilowanymi, a dzięki statycznemu typowaniu można sobie w IDE odpalić w dowolnym miejscu podpowiadanie składni, sprawdzić typ i metody każdego obiektu itd

0
donkey7 napisał(a)

Myślę, że popularność środowiska uruchomieniowego ma znaczenie. Z dużo większym prawdopodobieństwem losowy użytkownik posiada JRE niż niewbudowanego Pythona.

[...]

Dodatkowo, NetBeans posiada graficzny edytor GUI, nie wiem jak jest na tym polu w Pythonie.

Poza tym Delphi, Java i Scala (no i np Clojure, ale to już abstrakcja) są statycznie typowane, w odróżnieniu od Rubyego, Pythona czy PHP. Delphi, Java i Scala są też językami kompilowanymi, a dzięki statycznemu typowaniu można sobie w IDE odpalić w dowolnym miejscu podpowiadanie składni, sprawdzić typ i metody każdego obiektu itd

I tak wydając program na Winshit'a najlepiej dołączać wszystkie wymagane biblioteki itp., pod Linuksem można liczyć na repozytorium. Można swój program zamieścić z portable python'em, albo zrobić plik exe za pomocą np. cxfreeze.

Jeśli chodzi o GUI to jeszcze nie było mi potrzebne, ale raczej to oczywiste, że jak np. korzystamy z pyWx, to możemy używać np. GUI z wxFormBuilder'a. Do prostych projektów nawet poleciłbym TKinter (GUI pisze się ręcznie) - Tkinter jest dołączany do Python'a.

Delphi, Java itd. są statycznie typowane, ale to nie czyni ich prostszych w użytkowaniu - w Python'ie bez zbędnych ceregieli można osiągnąć dany efekt szybciej.

0

Jak ktoś rajcuje się dynamicznym typowaniem to niech se skorzysta z Pythona. Przeciwko Pythonowi są więc: beznadziejna wydajność w obliczeniach oraz mała popularność środowiska uruchomieniowego Pythona na Windowsie. Wielką zaletą Pythona jest poważnie zmniejszona ilość kodu.

Jednak to programowanie w Javie jest dużo bardziej zbliżone do programowania w Delphi niż programowanie w Pythonie.

Jeśli program nie będzie wykonywał wielu długich obliczeń to Python może się sprawdzić.

Wykorzystanie Pythona jako samodzielnego języka w programach komercyjnych jest niemal zerowe (sugerując się listą programów w Pythonie w Wikipedii), jest wykorzystywany zwykle do pisania pomocniczych skryptów.

0

Co do szybkości obliczeń Python'a można się kłócić. Szybkość zależy od przypadku, zerknij tutaj http://stackoverflow.com/questions/672857/is-python-slower-than-java-c - zdania się podzielone, ale ludzie zamieszczają wyniki swoich testów (np. ten: http://stackoverflow.com/questions/672857/is-python-slower-than-java-c/1177553#1177553 - udowadnia, że Python jest szybszy :P). Współcześnie tyle ludzie tracą na wydajności różnych języków (wszystkie Javy, C#'arpy itp.), że wydajność powinna być ostatnią rzeczą, która obchodzi ludzi, teraz stawia się na wygodę, zwłaszcza kiedy piszemy system informatyczny (zarządzanie firmą itp.). A pisząc np. gry możemy stosować różne biblioteki, które są napisane w wydajnych językach programowania, więc algorytmy czysto w Python'ie to rzadkość - całą fizykę, wyświetlanie grafiki można przerzucić na biblioteki napisane już w C/C++. Jak pisałem prostego bruteforce'a w Python'ie to dla funkcji crypt dla 4-literowego hasła na moim lapku algorytm wykonywał się jakieś 15 sekund, a jak przepisałem do C++,to uzyskałem wynik ok. 2 sekundy lepszy. Stosunkowo niewiele ;) W Python'ie obojętne, czy używałem modułu itertools, czy pisałem własny rekurencyjny algorytm.

0

http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=python3&lang2=java
Python średnio 30x wolniejszy od Javy, która często wydajnością nie grzeszy.

Jeśli chodzi o:
http://stackoverflow.com/questions/672857/is-python-slower-than-java-c/1177553#1177553
to wyraźnie pisze, że Python korzysta z algorytmu Karatsuby oraz że wykorzystuje tutaj natywną bibliotekę, przez co ten test jest bez sensu. To jest raczej porównanie szybkości bindingów Pythona do C. Karatsubę w Javie znalazłem w kilkana (naście) sekund w Google i zaprezentowałem tutaj:
VS2008 WM fibonacci duże liczby

Kolega chciał zrobić program bazodanowy. Używając H2 Database można napisać triggery do bazy w czystej Javie, co przekłada się na kosmiczną wydajność względem innych przenośnych rozwiązań.

Konieczność dokładania natywnych bibliotek do Pythona robi go totalnie nieprzenośnym językiem. Skryptowym, bo ogranicza się właściwie do wykonywania podprogramów napisanych w innych językach, niewiele różniąc się tutaj od np BASHa.

0
donkey7 napisał(a)

Konieczność dokładania natywnych bibliotek do Pythona robi go totalnie nieprzenośnym językiem. Skryptowym, bo ogranicza się właściwie do wykonywania podprogramów napisanych w innych językach, niewiele różniąc się tutaj od np BASHa.

W takim razie ciekawe co powiesz o C/C++ :D

Sam używam Pandy 3D pod Python'em, dla Winshita można zrobić przenośną paczkę (którą rozpakowujesz, odpalasz np. plik *.bat i cieszysz się działającym programem, albo korzystasz z narzędzia packp3d i każesz użytkownikowi korzystać z runtime'a Pandy), dla Linuksa Panda3D ma swoje repozytorium, dodajesz je do źródeł, instalujesz i masz, albo dodajesz paczkę Pandy do własnego repozytorium z aplikacją, runtime'a też możesz kazać instalować - nic, czego byś nie robił dla programu napisanego w innym języku programowania. Pod Win prawie każdy do swojego programu dodaje potrzebne biblioteki, pod Linuksem są często zależności. Masz też dodatki w stylu py2exe, albo cxfreeze itp., dzięki którym możesz wszystko zamknąć w pliku exe (do Javy też są takie narzędzia).

Co do natywnych bibliotek, to Java też potrzebuje do pewnych rzeczy dokładanie dll'ek, np. do java media framework.

I jak już wspomniałem, na wydajność nie ma co narzekać.

0

No dobra. Pyton jest trendi, dżezi i gay-friendly. Używajcie go wszyscy i cieszcie się :P

Autor nic się nie wypowiada, dyskusja straciła sens trochę.

0
ipy1976 napisał(a)

...Do tej pory pisałem w Delphi i nie ma dla mnie znaczenia, czy przesiądę się na Javę, czy Pythona- chcę po prostu pisać programy bazodanowe...

Dla mnie brzmi to dziwnie, głowę bym dał że z przytaczanych tu języków najprzyjemniej będzie Ci się pisało aplikacje bazodanowe właśnie w Delphi, chyba że mają to być aplikacje webowe bądź przeznaczone na urządzenia mobilne.

b

0

Witam po przydługawej przerwie ;-) Przez cały czas próbowałem odnaleźć się w środowiskach Java i Python. Usiłowałem też skonfigurować NetBeans i zmusić go do działania tak, jak ja chcę- ale w każdym przypadku był jakiś powód, dla którego każda z tych opcji jakoś nie przypadła mi do gustu. Znalazłem z kolei na stronach www.about.com świetny tutorial wyjaśniający pracę na bazach Access`owych- mam już za sobą stworzenie pierwszej bazy, wyświetlenie 5 tabel na formie i obsługę ich panelem DBNavigator- styl pracy taki do jakiego jestem przyzwyczajony, no i Delphi ;-) Myślę, że stworzę na razie desktopową wersję programu, a później pomyślę o ewentualnym przekonwertowaniu go na przenośny lub webowy. Ech, czuję się już staro i jakoś nie wchodzi mi do głowy uczenie się zupełnie nowego podejścia do programowania, jak w przypadku Javy i Pythona- a zatem kontynuuję stukanie w Delphi ;-) Dziękuję serdecznie za rady, dzięki Wam miałem okazję zweryfikować swoje potrzeby i- przede wszystkim możliwości. Powodzenie w programowaniu! Jeszcze raz dziękuję za pomoc!

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