Java 11 - dostępna od jutra

Java 11 - dostępna od jutra
Leroy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:107
0

Jedyne co mnie na razie cieszy w tej wersji, to http client wbudowany w SDK i LTS.
Nie zaglebialem sie co prawda jeszcze czy ma przyjazne i wygodne API i na co pozwala, ale ciesze sie na sama mysl ze byc moze bede mogl (i moze nawet chcial) zaczac wyp* te rakowe 'apache http client' i nie bede musial sie tlumaczyc. Teraz bedzie 'jest w SDK wiec jest infinite support i awesome'.

Na epsilona nie mam zadnych przypadkow uzycia.
Local-Variable Syntax for Lambda Parameters (JEP 323) to tylko przymiarka do zmian wprowadzajacych pattern matching i enhanced switch statement.
Dynamic Class-File Constants (JEP 309) za nisko dla smiertelnikow.
Remove the Java EE and CORBA Modules (JEP 320) whatever, kto tego jeszcze uzywa

edytowany 3x, ostatnio: Leroy
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
1

Na epsilona nie mam zadnych przypadkow uzycia.

Benchmarki :)

Local-Variable Syntax for Lambda Parameters (JEP 323) to tylko przymiarka do zmian wprowadzajacych pattern matching i enhanced switch statement.

Eee, że niby w jaki sposób? Jedyne ciekawe przykłady pokazane w JEPie to możliwość dodania adnotacji dla parametrów lambdy z niejawnym typem, czego nie można zrobić w Javie 8. Tzn w Javie 11 możesz zrobić (@Nonnull var x, @Nullable var y) -> x.process(y) ale (@Nonnull x, @Nullable y) -> x.process(y) już nie.


"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.
edytowany 1x, ostatnio: Wibowit
Leroy
hmm, o tym nie pomyslalem szczerze mowiac i raczej nigdy tego tak nie uzyje oO Bardziej mialem na mysli, ze skladnia jaka jest pokazywana przez Briana Goetza (gdzies na ktorejs konfie) do pattern matchingu wyglada (jakos) tak switch(x) { case Person(var x, var y) -> ... } i chca ujednolicic jak to wyglada w porownaniu z reszta jezyka juz teraz (sekcja 'motivation' tutaj o tym wspomina http://openjdk.java.net/jeps/323) Ale fakt ze modyfikatory tez dzieki temu wpadaja.
Wibowit
Nie widzę słówka case w tym JEPie.
Leroy
na epsilona to chyba do apek typu batch processing o znanym rozmiarze czy aws lambda (tutaj nie jestem pewien, nie korzystalem ale tylko mi swita) i ogolnie do procesow o bardzo krotkim czasie zycia typu odpal i zapomnij
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:22 minuty
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1
Wibowit napisał(a):

Na epsilona nie mam zadnych przypadkow uzycia.

Benchmarki :)

  1. Toole command line, krótko żyjące, gdzie dzieki olaniu GC można jeszcze przyspieszyć działanie (dodac to tego AOT compilation i nabiera sensu java w tym zastosowaniu).
  2. Systemy low / no gc, soft real time. Gdzie obecnie nie mamy faktycznie allokacji, bo wyszystko jest allokowane po inicjalizacji systemu. Dzięki epsilon moga nieznacznie wydajniej działać bo odpadnie zupełnie niepotrzebna, dodatkowa komplikacja związana ze startowaniem gc, dodatkowymi wątkami gc itp. Dodatkowo, a może głównie, upraszcza się konfiguracja. Wcześniej trzeba było wydumać parametry gc takie żeby prawie nigdy się nie odpalił (a i tak nie było gwarancji).

jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Epsilona to ja chętnie przytulę w testach wydajnościowych "wielokskalowych" tzn. gdzie testujemy z poziomu np. SOAPowego API. Odpadnie problem niestabilności pomiarów.

Poza tym teaki noop gc jest fajny wszędzie tam gdzie potrafimy policzyć ile tej pamięci potrzeba. Krótko żyjące usługi raportowe, mikroserwisy w kontenerach, które po prostu się restartują jak poleci OoME, usługi obliczeniowe na prymitywach. Wszelkiej maści małe urządzenia o niekrytycznym znaczeniu np. zarządzanie oświetleniem w domu. Zresztą lepiej niech się wywali, ale wiem o tym, że się wywali, a nie user manual i "pamiętaj by co 248 dni zrestartować swojego Dreamlinera".


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
0

Gość napisał sporo prawdy o Javie 11, a pracuje w niej od 20 lat.
przemelek.blogspot.com/2018/10/czas-porzucic-javae.html

Wibowit
gość sieje FUD
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Przemek mocno uprościł problem. OpenJDK będzie budowane na bieżącą (jak to ma miejsce obecnie). Kolejne wersje javy będą zawierały różne usprawnienia i nowe API, ale raz na pewien czas będzie wydawany LTS i to właśnie LTSy będą istotne z punktu widzenia produkcji. Poprawki bezpieczeństwa jak były wdrażane tak i będą wdrażane na bieżąco. BTW, dzisiaj też nie aktualizuje się JRE na produkcji wraz z każdą zmianą, bo nie ma takiej potrzeby (bo serwery zazwyczaj żyją w sieci wewnętrznej).

Zresztą cały system modułów wprowadzony w Javie 9 miał za zadanie umożliwienie wydawania JRE w krótkich cyklach. Kolejna rzecz to profile, które żyły sobie w Javie EE, a dzięki modułom wejdą do JSE. Oznacza to, że duże firmy będą używać nie tyle co JSE w wersji X, ale będą tworzyć własne deskryptory, które będą zawierać listę modułów dostępnych na środowisku produkcyjnym.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
0

Ale jaki to będzie miało wpływ na trudność nauki Javy, będzie trudniejsza, ponieważ szybciej będą wprowadzane zmiany jak to ma miejsce w Scali?

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Nie. Kolejne wersje będą zawierać kolejne moduły i API, które dodawać będą pewne funkcjonalności. Jednak na początku i tak z nich nie korzystasz w trakcie nauki. Względnie są one "oczywiste" jak switch ze stringami czy multiline string.

BTW, Przemka post z 2010 roku https://przemelek.blogspot.com/2010/12/szkoda-javay.html


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostałe 6 komentarzy
jarekr000000
@Shadov - masakra... może nie 10%, ale też to mam :-)
jarekr000000
@Koziołek: użyteczne GUI nie musi idealnie wyglądać pod względem kolorów, ale zwykle idzie to w parze. Po prostu nie było GUI designera i zrobili biedaki jak umieli, a my się męczymy.
S9
No w sumie GUI od IntelliJ jest zarąbiste, troche się zdziwiłem jak dowiedziałem się że jest w Swingu :D :D :D
jarekr000000
Bo Swing jest bardzo dobry, tylko niestety aby wygłądało GUI dobrze, to trzeba dużo o Swingu poczytać. To i tak lepiej niż JSF, gdzie trzeba dużo poczytać, żeby nie strzelić sobie w stopę i nie rozwalić projektu. W Swingu co najwyżej karą jest kiepski look & feel. Ale działać będzie... i działa (niestety). Btw. Netbeans też jest dobrze zrobiony. Nie tak piknie jak Intellij, ale wstydu nie robi.
S9
JSF to totalny nowotwór :D
0

Intellij jest napisane w Swing nie w JavaFX :o

jarekr000000
Ale tu chyba nikt nawet nie wspominał JavaFX...
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Znany antypattern:

Wołanie przodka (ang. CallSuper): W programowaniu obiektowym możliwe jest dziedziczenie właściwości i zachowania klas bazowych i przedefiniowywanie ich. Często metoda, która przedefiniowuje metodę bazową musi się i tak odwołać do metody bazowej w środku, aby skorzystać z jej funkcjonalności – dużo lepszym pomysłem w takim przypadku jest stworzenie czysto abstrakcyjnej metody w klasie bazowej.

Java ma na to nawet podobnie nazywające się słowo kluczowe: super. Mogłoby być CallSuper ps dodam, że w w Androidzie wiele przeciążonych metod, gdzie dodajemy własną implementację i tak musi na końcu lub początku zawierać wywołanie z super, zwykle jako return metody. Mają swoją implementację w klasie bazowej i w dodatku koniecznie trzeba jej użyć.

edytowany 1x, ostatnio: kulson
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
0

W Scali jest https://www.artima.com/scalazine/articles/stackable_trait_pattern.html i jest używany np ScalaTeście i (rzadziej) w aktorach Akkowych. Wołanie super jest tam konieczne by wzorzec zadziałał.


"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.
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Używanie antywzorca żeby wzorzec zadziałał. Hmhh

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
0

Stackable Traits działają świetnie w ScalaTeście. Nie widzę przeciwwskazań do ich stosowania w tym przypadku. Zauważ, że zarówno wzorce jak i antywzorce mają sens w pewnym kontekście.


"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.
0

Czy to prawda, że Java jest dalego w tyle za C# ?

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
2

W ilości słów kluczowych na pewno.


"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.
0

Niestety C# jest daleko w tyle za Kotlin i Scala. JVM to nie tylko Java, Google odchodzi od Javy na rzecz Kotlina, Go i Dart.

Aryman1983
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Pabianice
  • Postów:255
1

To ciekawe bo jak społeczność zapytała, czy kotlin będzie portowany na net to twórcy stwierdzili, że c# jest znacznie nowocześniejszy i lepiej zaprojektowany niż Java więc nie ma takiej potrzeby.

0

To piszesz o maszynie wirtualnej C# i JVM, nie o samym języku, może o to im chodziło?

._.
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:250
0

W C# jest ten problem, że jak chcesz coś zrobić w MSbuild bez IDE to przeżyjesz horror. .Net Core .Net 45 .NetStandard, który wymaga .Net 4.6.1. To nie jest tak jak w JVM, że weźniesz sobie kodzik z Windowsa i go po prostu odpalisz na Linuksie.

edytowany 1x, ostatnio: ._.
Zobacz pozostałe 5 komentarzy
._.
"No chyba, że @._. pisze w standardzie i zdziwiony, że nie leci mu na Corze, lol." A do czego jest .netstandard ?
WeiXiao
@._. znaczy zwykły .NET Framework windowsowy. Głupie te nazwy mają. tak jak nuget nie dadaje od razu referencji do csproj. na pewno? wydaje mi się, że dodaje normalnie np. <PackageReference Include="Microsoft.AspNetCore.App" />
._.
A zainstaluj sobie cos np. nuget install nhibernate mnie tylko paczkę ściąga.
._.
Chyba mówisz o Core w .Net Framework powinieneś mieć <Reference Include="System.Web.Helpers"><br /> <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll</HintPath><br /> </Reference>
WeiXiao
@._. tak, piszę o Corze.
Aryman1983
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Pabianice
  • Postów:255
0

Cały czas zwracacie uwagę na toole oraz vm. Tutaj chodzi o sam język który jest obecnie w wersji 7.3 :-)

0

Jeżeli to prawda, że developerzy Kotlina z Rosji wybrali JVM do swojego języka, tylko dlatego, że CLR od Microsoftu był lepszy i nie opłacało się go ulepszać nowym językiem programowania. To co można powiedzieć o kompilatorach powstałych dużo później? Powinny przodować takie nowości jak Go, Swift, Crystal, Rust :)

Aryman1983
Aryman1983
CLR to nie kompilator.
KU
Możesz sobie pisać w swift, kto ci broni? Jest za darmo: https://swift.org/download/#releases nawet na Ubuntu, jest też wtyczka do cLion https://plugins.jetbrains.com/plugin/8240-swift
jarekr000000
Nie zawsze jak coś powstanoe później to przoduje np.: go. Nie pisze, ze jest całkiem bezużyteczny.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
0

Sporą zaletą Kotlina jest to, że działa bez problemu na Androidzie, gdzie nowe wersje Javy wchodzą powoli.

Na .NETa jest parę języków spoza MS, ale się nie wybiły: https://en.wikipedia.org/wiki/List_of_CLI_languages
Jeden z języków który się pojawiał na tym forum to pochodzący z Polski https://en.wikipedia.org/wiki/Nemerle - nota bene, wg Wiki w Nemerle inwestowali JetBrains, czyli twórcy Kotlina

Goście z JetBrains zauważyli, że poza C# reszta języków praktycznie nie istnieje w świecie .NETa, więc nie ma sensu się za niego brać:
Kotlin on .NET platform https://discuss.kotlinlang.org/t/kotlin-on-net-platform/2142

Hello,
do you plan to port kotlin on .net platform?

At the moment there are no such plans.

Given that previous attempts to build alternative languages on the CLR (Boo, Nemerle, Scala.NET, even F#) saw extemely limited adoption, the “hell yeah” doesn’t actually sound believable. And C# is a much more modern, full-featured and nicely designed language than Java 8.

Następnym razem zanim ktoś zapyta czemu firma X (inna niż Microsoft) nie przeportuje swojego języka na .NETa to niech sprawdzi jak takie inwestycje wypadały w przeszłości. Skoro nigdy to nie wypalało to po co próbować dalej?


"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.
edytowany 1x, ostatnio: Wibowit
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Mam wrażenie, że Kotlin nie zyskałby żadnej popularności, gdyby nie to, że Google uznał go jako oficjalny język dla Androida. A dlaczego? Bo łatwiej było użyć nowego języka, niż adaptować wszystkie ficzery Javy na tej platformie. Java powoli staje się kulą u nogi, widać to po tym, jak duże ma tyły na Androidzie, nawet nie wszystko z Javy8 jest obsługiwane.

I poprawcie mnie jeśli się mylę, nie wydaje mi się żeby Kotlin był szeroko stosowany gdziekolwiek poza Androidem

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:22 minuty
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
0

Ja korzystam z Kotlina na backendzie.
Spring wspiera kotlina na równiz javą, a promują chyba bardziej niż javę (na backend).
Nawet jednym w banku, gdzie pracuje, ruszyły pierwsze projekty w kotlinie (na backend).


jeden i pół terabajta powinno wystarczyć każdemu
Michał Sikora
Michał Sikora
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
0

W porównaniu do Javy, to fatycznie szeroko nie jest używany. Ale porównanie do Javy jest trochę nie na miejscu. Fakt, że na Androidzie była szybka adopcja wynika po pierwsze z życia w świecie Javy 6.5 i pewnie też z chęci ucieczki od sporów z Oraclem. Natomiast udział Kotlina poza Androidem jest widoczny.

Gradle wspiera, promuje i zachęca do używania Kotlina. N26 pisze głównie w Kotlnie nowe rzeczy. W Allegro korzysta się z Kotlina. Wewnętrzne projekty Googla nierzadko korzystają z Kotlina (zewnętrzne też, ale to głównie Android). Square korzysta z Kotlina nie tylko na Androidzie. Jitpack nowe rzeczy robi w Kotlinie. Pivotal robi dużo dla adopcji Kotlina. Trochę tego jest.

edytowany 1x, ostatnio: Michał Sikora
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Ok, ale czy poza Androidem nie lepszym wyborem jest Scala?

Michał Sikora
Michał Sikora
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
0

Jeśli patrzeć na samą moc języka, to pewnie jest. Nie znam Scali na tyle, żeby mieć dobrze wyrobione zdanie, ale na pewno Scala wymaga dużo więcej restrykcji od programistów, bo na więcej pozwala. Dla mnie Kotlin jest bardziej pragmatyczny i można w nim też pisać elegancki i zgrabny kod + ma trochę własnych fajnych mechanizów, które nie są przesadzone. Myślę, że @jarekr000000 miałby więcej do powiedzenia w temacie Scala vs Kotlin.

Natomiast w przypadku wieloplatformowego kodu, to myślę, że Kotlin tak za 2 lata będzie naprawdę solidny pod tym względem i będzie jednym z najlepszych wyborów.

edytowany 3x, ostatnio: Michał Sikora
Zobacz pozostałe 3 komentarze
Michał Sikora
Michał Sikora
Tak. JetBrainsi dosyć ostro pracują od ostatniego roku nad Kotlin native i iOS jest jedną ze wspieranych platform. 4 dni temu ogłosili wersję beta. Są też już pisane biblioteki i aplikacje wieloplatformowe. Aplikacje oczywiście małe albo demo, bo Kotlin nie jest jeszcze full wypas gotowy pod native, ale dosyć szybko tam zmierza.
KU
Nie wiem jak na iOS (tam chyba wszystkie apki są native), ale jeśli chodzi bo Androida to mi bardziej wygląda na odpowiednik NativeActivity
Michał Sikora
Michał Sikora
Chyba nie rozumiem, o co Ci chodzi. Mi chodzi o to, że będziesz miał moduły napisane w czystym Kotlinie, które nie korzystają z żadnych typów konkretnych platform i będą one mogły być kompliowane do bajtkodu, kodu natywnego albo transpilowane do ECMA i tu będzie siedziała większa część kodu współdzielnego. Potem już odpowiednie końcówki, które wymagają typów platformowych będą napisane w Kotlinie na konkretną platformę. Albo i nie, jeśli ktoś woli np. Javę, Swifta albo TS'a, bo powinno to być niewidoczne ze względu na interoperacyjność.
KU
Nie no chodziło mi tylko o to, że native kojarzy mi się z ndk
Michał Sikora
Michał Sikora
Racja, native można różnie rozumieć. W tym kontekście miałem na myśli native w sensie kodu maszynowego. W teorii można dla Javy kompliować Kotlina do kodu maszynowego i konsumować przez JNI/NDK, ale to bez sensu, bo można od razu kompliować do bajtkodu.
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

Scala ma 2 wady:
1)Długi czas kompilacji
2)No i składniowo jest dosyć trudna IMO


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
0

Nie - lepszym wyborem jest Kotlin.


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
0

Kotlin jest trudniejszy od TypeScript, ponieważ stoję przed trudnym wyborem języka. TS przypomina Jave i C# i chyba się na nich wzoruje.

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)