Systemy operacyjne w Javie

Systemy operacyjne w Javie
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

Pisząc "Znowu", mam na myśli, że już ktoś kiedyś próbował (System Operacyjny napisany w javie z pozdrowieniami od wujka Google, który znalazł ten temat sprzed 2 lat).
Ja miałbym w związku pytanie. Jeżeli wasza odpowiedź mnie zainspiruję, to może w coś takiego się pobawię (od pewnego czasu zastanawiam się nad systemem operacyjnym dla seniorów, tzn. łatwym do obsługi, przejrzystym itd.). Najpierw jednak, kilka informacji (jeżeli gdzieś się pomyliłem, to mnie poprawcie):

Programy w Javie odpala się za pomocą JVM (zwane także JRE). JVM to Java Virtual Machine, czyli maszyna wirtualna. Maszyna wirtualna to program symulujący działanie komputera (jak VirtualBox), dzięki któremu można przetestować inne systemy operacyjne. Taki trik Suna sprawił, że program z Javy powinien teoretycznie działać tak samo, bez względu na system operacyjny. Niestety, JVM nie posiada pojedynczej wersji, ale aż 4: Windows, Mac OS X, Linux i Solaris.

Zacząłem się zastanawiać, co z tym zdziałać, aż tu nagle jakimś cudem trafiłem do biblioteki miejskiej, gdzie znajdowały się komputery. Po uruchomieniu jednego, wyświetlały się teksty jak przy ładowaniu systemu, lecz co chwila przelatywało mi słowo "Linux". Pomyślałem sobie, że pewnie użyli go, bo jest darmowy. Nieoczekiwanie, zamiast normalnego ekranu, włączyła się natychmiastowo przeglądarka Chrome. Mimo dostępności przycisków maksymalizacji i minimalizacji, te przyciski nie działały. Działał jedynie przycisk zamknięcia programu, który całkowicie wyłączał komputer. W związku z tym, pomyślałem, że można tak napisać system w oparciu o jądro Linuxa, że będzie on mógł odpalić tylko jeden program. Poczytałem trochę o jądrze Linuxa i znalazłem to: http://pl.wikipedia.org/wiki/Linux_(j%C4%85dro)#Uruchamiane_oprogramowanie

Zainteresowało mnie tam zwłaszcza to, że jądro Linuxa może odpalać programy napisane w Javie poprzez maszynę wirtualną (tu chodzi chyba o JVM). W związku z tym, moje pytania do profesjonalistów jest następujące:

  1. Czy można utworzyć taką wersję Linuxa, który odpala tylko jeden program?
  2. Czy tym programem może być program napisany w Javie, odpalany przez zainstalowany w Linuxie JVM?
  3. Czy cały ten pakiet (jądro Linuxa + JVM + program w Javie) musiałby podlegać chociażby licencji GPL, czy też samo jądro Linux? (Linux jest na tej licencji, i wymaga zachowania licencji dla kopii bądź modyfikacji jądra)

...
lukasz1235
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 8 lat
  • Postów:1105
1
  1. Tak
  2. Tak
N4
Chwała ci, o wielki Łukaszu! Zabieram się do pracy! Teraz tylko od odpowiedzi na ostatnie pytanie zależy, czy mój system będzie darmowy, czy nie :D (Oczywiście, żartuję)
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
N4
Byłoby to możliwe, ale po lewej stronie zakładek nie było poczty i innych przycisków interfejsu. Ale poza tym, tak :)
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0
norbi452 napisał(a):

Czy cały ten pakiet (jądro Linuxa + JVM + program w Javie) musiałby podlegać chociażby licencji GPL, czy też samo jądro Linux? (Linux jest na tej licencji, i wymaga zachowania licencji dla kopii bądź modyfikacji jądra)

Chyba sam sobie odpowiedziałem na to pytanie:

  1. Na licencji GPL będzie tylko jądro Linuxa
  2. JVM jest na licencji freeware, ale zakładając, że będę pobierał pieniądze za system, to będzie to kasa za program w Javie, a nie za JVM

Czy prawda to, czy fałsz?

PS: Zanim na poważnie zajmę się pisaniem systemu operacyjnego od zera, zrobię najpierw coś udającego system operacyjny, będący tak naprawdę zwykłą aplikacją na Windowsa. Może mi ktoś powiedzieć, jak się takie coś nazywa?


...
edytowany 1x, ostatnio: norbi452
0
norbi452 napisał(a):

PS: Zanim na poważnie zajmę się pisaniem systemu operacyjnego od zera, zrobię najpierw coś udającego system operacyjny, będący tak naprawdę zwykłą aplikacją na Windowsa. Może mi ktoś powiedzieć, jak się takie coś nazywa?

http://pl.wikipedia.org/wiki/System_operacyjny

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:12 miesięcy
0

Nazywa się to uruchamianie aplikacji w trybie kiosku. Działa tak np. część bankomatów, automaty do zakupu biletów, te od wyświetlania reklam i tysiące innych. Czas stworzenia takiego systemu jest o wiele krótszy, gdy nie musimy pisać własnego systemu operacyjnego. Dlatego używa się do tego Linuksy i Windowsy.

Wpisz sobie w google: kiosk mode.

edytowany 1x, ostatnio: Rev
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

kiosk mode? Na początku się troszkę uśmiałem, ale gdy wpisałem kiosk mode do wujka Google, to przestałem się śmiać.
Teraz problem kolejny i wielokrotnie naruszany: Plik .JAR. Stworzyłem taki plik za pomocą konsoli Windowsa, wrzuciłem do środka pliki klas oraz MANIFEST.MF - wszystko po to, by można było odpalić .jar jak .exe. Sęk w tym, że "Error: Invalid or corrupt jarfile". Najlepszym sposobem na przedstawienie całości kodu będzie http://www.sendspace.pl/file/1f45129ba00f1f093e6725c. Klasą główną jest tu SimpleOS.class z paczki simpleos

EDIT: Nieważne, znalazłem sposób na automatyczne zrobienie .jar w NetBeans


...
edytowany 1x, ostatnio: norbi452
bogdans
Jak robiłeś tego jara w konsoli?
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:10 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Może tego nie wiesz, ale tak działa bardzo dużo urządzeń. Prawdopodobnie większość z tych 3 miliardów, którymi przy instalacji Javy chwali się Oracle. ;)
Z najbliższego podwórka, to tak właśnie działa każdy turbo dekoder telewizji N (każdy). To nic innego jak Linuks odpalający JVM, która odpala aplikację Javową.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

@norbi452, najprostszy sposób zrobienia działającego jara w konsoli, to:
**jar -cvfe simpleos.jar simpleos.SimpleOS * **


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

Okej, ale problem rozwiązałem. Piszę w NetBeans i słyszałem gdzieś, że istnieje tam funkcja tworzenia plików .JAR, ale nie mogłem tej funkcji znaleźć. Poszukałem w sieci i odkryłem "Clean and Build", po którym w folderze "dist" pojawia się plik .JAR


...
bogdans
Wiem, że problem rozwiązałeś. Ale mogą ci ukraść NetBeansa.
N4
Ukraść? W sensie, że... co?
bogdans
W tym sensie, że musisz zrobić jara na komputerze, na którym nie ma NetBeans.
N4
Olamagato
Żeby było trudniej? Jest taki programik w JDK/bin, który nazywa się dość podstępnie bo... jar (np. jar.exe). Dziwnym trafem ma on funkcję podobną do programów arc, pkzip czy rar. :)
airborn
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
1

Wrócę na chwilę do wątku, żeby nie było nieporozumień które wynikły w tym temacie Przeglądarka w Javie.

Ty NIE piszesz systemu operacyjnego. Odpalenie kioskowej aplikacji na jakiejś dystrybucji GNU/Linuxa to jeszcze nie jest napisanie systemu operacyjnego. To po prostu napisanie aplikacji. Żeby napisać SO nawet oparty na jądrze Linuxa potrzebujesz troszkę więcej zachodu.

To co możesz zrobić, to przygotować zmodyfikowaną dystrybucję (Ubuntu, Fedora, openSUSE) która odpala Twoją aplikację. Ale to wciąż jest gotowy system operacyjny, tyle że, z Twoją aplikacją.

N4
Ehhh... " weźmiesz jakąś dystrybucję Linuksa (a nie samo jądro)" - ale ja mam zamiar właśnie wziąć samo jądro i się nim pobawić, i błagam - żadnych komentarzy typu "nie poradzisz sobie", "nie umiesz", "nie znasz podstaw" itp. - TAK! Nie znam podstaw! I właśnie to, że się na tym nie znam, motywuje mnie do tego, by się tego nauczyć.
airborn
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Ależ ja nie mówię, że sobie nie poradzisz. Tylko nie zaczynaj pracy od końca, nie rób 'przeglądarki' jeżeli na Twoim 'systemie operacyjnym' nie ma środowiska graficznego, nie ma systemu paczek, nie wspominając nawet o JVM. Nie mówię tego po to by Cię zniechęcić, tylko by zracjonalizować Twoje zapędy.

Przyjrzyj się narzędziom typu http://susestudio.com/ powinny w zupełności Ci wystarczyć, dając jednocześnie olbrzymie możliwości dostosowania do własnych wymagań.

edytowany 1x, ostatnio: airborn
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:dzień
0

Trzeba zacząć od http://www.linuxfromscratch.org/ :]


"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.
N4
:D Czy coś zrobione w Scratchu ma w ogóle prawo działać jako samodzielny system? xD
N4
A, sorry. Jak widzę "Scratch" (i jeszcze puzzle w logo), to na myśl przychodzi mi tylko http://scratch.mit.edu/ :D
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)