- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Yettel topik
- Kreatív előzetesen az Xperia 1 VIII
- Fotók, videók mobillal
- Feltalálta a Google a keresőmotort
- Samsung Galaxy S24+ - a személyi asszisztens
- A Sony bemutatta eddigi legjobb és legdrágább zajszűrős fejhallgatóját
- Samsung Galaxy S20 FE Snapdragon topik
- Apple Watch
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Poco F8 Ultra – forrónaci
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Lortech
addikt
Helló!
Segítség / Vélemény kellene. Én új vagyok ebben a Java-ban, bár van C#/.NET tapasztalat, tudásom.
A koncepció: lenne 2 java-s projekt:
- A projekt
- B projekt, ami egy JavaFX-es projekt, és ennek kellene használnia az A projektben lévő osztályok metódusait. Egyfajta API hívások zajlanak.C#-ban ez nem nehéz, mert ott ugye van 2 solution és referencia alapján behúznám B-t tartalmazó solution-hez az A projektet.
No de Java-nál ez hogyan műkődne? (Én olvastam, hogy JAR import fájl, de ezt nem látom át.)
Én az A és B-nek is külön git report tartanék fel, mert A projekt a motor / engine, B projekt, az asztalis GUI alkalmazás ami hívogatja az A osztályok metódusait, illetve valószínűleg a jövőben lesz egy C projekt, ami ugyanugy az A-t használja fel, csak az nem asztali GUI, hanem egy webes alkalmazás lenne.
Plusz, akkor már lehetne kísérletezni a Continous Integration-nel is.Ha esetleg erről kaphatnék egy step-by-step tutorialt, vagy hogyan kell rákeresni a neten.
Azt tudom, hogy van Java-ban a maven vagy gradle (utóbbira szavazok).C#-nál egy saját nuget szervert hoztak létre a többiek, és oda voltak mindig feltöltve a legújabb verziók a projektekről, így a másik projektnél mindig a legfrissebb verzió jelent meg build során.
Itt is valami ilyesmit kellene összehozni a Java-ban? (valami belső package kezelőt?)Egy Java csapatba átdobott (egyetemen használta utoljára Java-t) fejlesztő kér segítséget

Van ilyen lehetőség is. De ez azért nem tetszik, mert a többi "kezdő" fejlesztő, más folder alatt dolgozhatnak (más útvonal)
Ezt olyan embernek kellene csinálnia szerintem, aki azért tudja, hogy mit csinál, projekt alapozást eléggé be lehet nézni, és megnehezíteni az egész csapat számára a későbbi munkát. Az ehhez szükséges tudást egész biztosan nem egy fórum hozzászólás alapján fogod megszerezni.
Létrehozhatsz két különálló maven (gradle) projektet.
A-ból elkészül az artifact (pl. jar), azt instalállod a lokális és/vagy távoli repositoryba (Nexus (+nuget akár), vagy Artifactory).
B maven projektből meghivatkozod az A-t mint függőséget.
Az elkészült maven/gradle projektet behúzod a szimpatikus IDE-be, mint maven/gradle projekt.
Vagy használhatsz multi module-t: létrehozol egy parent projektet, A és B modult, és B modulban definiálod A-ra a függőséget.
Gyors kereséssel itt egy példa utóbbira: [link]
Itt A a weather, B a webapp module. -
emvy
félisten
Hali!
Lenne egy kérdésem, hogy az álláspiacra egy junior / beugró szinten mit kell tudni a JavaEE-ből? (Miket érdemes megtanulni?)
Egyetemen JavaSE ment. Alap elméleti szintem van a JavaEE, szóval tudom, meg nagyjából a JSP, JSF, de gyakorlati szinten sosem szagoltam hozzá.
OOP nem akadály, igaz, hogy melóban PHP-ban van 2,5 tapasztalatom, de Symfony2 keretrendszer (PHP-s)-ról nézegetve az alap JavaEE-t úgy a mögötte lévő HTTP filozófiát könnyű felfognom. Plusz pár hónapja átdobtak a .NET csapatba, ahol Asp.net MVC megy. Szerintem innen a JavaEE-re átállni nem lehet nagyon nehéz. (Git, TDD, Scrum, demozás, verik belém a németek)De csak alap szinten tényleg csak a szükséges szintet akarom megtanulni (de az nem tudom, hogy micsoda, EJB, JDBC, esetleg a Hibernate is kellenne?) Mely könyveket érdemes nézegetni.
Azért akarom az elégséges szintet, mert a Scala sokkal jobban érdekel, igaz nehezen tanulom most (van online kurzus) de nagyon motivált vagyok benne.
És ahogy nézegettem a Scala álláshirdetéseket, Scala együttjár a JavaEE. És ezért akarok csak egy "elégséges szintet tudni". Nektek mi a véleményetek erről?
Mondjuk lesz egy olyan Androidos kurzus folytatás, ahol a szerver oldali részét nézik meg és SpringMVC-vel fognak dolgozni, talán arra még érdemes energiát és időt szánnom.
Meg Maven-t már nem nézném át, inkább csak Gradle-t használnék helyette.PHP-t már kezdem kinőni (néhány hobbi projekthez jó) Ruby on Rails-sel elhelyezkedni nagyon nem lehet, max csak Seniorként, Java és C# hosszabb távon nem érdekel. Scala az ami érdekel (már egyetemen is megfogott a Prolog), a Hadoop, na meg a C++ linux és beágyazott rendszerekhez. (De Scala és a Hadoop páros az ami motivál)
Python sem rossz, de nem tudnék benne hobbi projektet fenntartani.
A Scala meg a JavaEE szerintem nem fuggenek jobban ossze, mint barmilyen mas Java-s technologia. Ha a Scala ennyire tetszik, akkor nezd meg az extrem oldalat, pl. a Scalaz-t. Ha most jonnek ki az egyetemrol, akkor tuti megprobalnam elkerulni a Springet meg a J2EE-t, ennel sokkal erdekesebb dolgok is vannak a vilagban, es penzt keresni massal is lehet.
-
raggg
senior tag
Hali!
Lenne egy kérdésem, hogy az álláspiacra egy junior / beugró szinten mit kell tudni a JavaEE-ből? (Miket érdemes megtanulni?)
Egyetemen JavaSE ment. Alap elméleti szintem van a JavaEE, szóval tudom, meg nagyjából a JSP, JSF, de gyakorlati szinten sosem szagoltam hozzá.
OOP nem akadály, igaz, hogy melóban PHP-ban van 2,5 tapasztalatom, de Symfony2 keretrendszer (PHP-s)-ról nézegetve az alap JavaEE-t úgy a mögötte lévő HTTP filozófiát könnyű felfognom. Plusz pár hónapja átdobtak a .NET csapatba, ahol Asp.net MVC megy. Szerintem innen a JavaEE-re átállni nem lehet nagyon nehéz. (Git, TDD, Scrum, demozás, verik belém a németek)De csak alap szinten tényleg csak a szükséges szintet akarom megtanulni (de az nem tudom, hogy micsoda, EJB, JDBC, esetleg a Hibernate is kellenne?) Mely könyveket érdemes nézegetni.
Azért akarom az elégséges szintet, mert a Scala sokkal jobban érdekel, igaz nehezen tanulom most (van online kurzus) de nagyon motivált vagyok benne.
És ahogy nézegettem a Scala álláshirdetéseket, Scala együttjár a JavaEE. És ezért akarok csak egy "elégséges szintet tudni". Nektek mi a véleményetek erről?
Mondjuk lesz egy olyan Androidos kurzus folytatás, ahol a szerver oldali részét nézik meg és SpringMVC-vel fognak dolgozni, talán arra még érdemes energiát és időt szánnom.
Meg Maven-t már nem nézném át, inkább csak Gradle-t használnék helyette.PHP-t már kezdem kinőni (néhány hobbi projekthez jó) Ruby on Rails-sel elhelyezkedni nagyon nem lehet, max csak Seniorként, Java és C# hosszabb távon nem érdekel. Scala az ami érdekel (már egyetemen is megfogott a Prolog), a Hadoop, na meg a C++ linux és beágyazott rendszerekhez. (De Scala és a Hadoop páros az ami motivál)
Python sem rossz, de nem tudnék benne hobbi projektet fenntartani.
Szerintem egy erős Java tudás mellett némi Spring || EJB / Hibernate tudás elegendő. Voltam már olyan interjún, ahol komolyan belekérdeztek a frameworkökbe, de azért szerintem nem annyira jellemző (legalábbis én kevésbé tapasztaltam eddig). Ahol komoylabban belementünk, ott pedig éppen olyanról kérdeztek, amiről előtte mondtam, hogy dolgoztam vele.
Amit azért érdemes megnézni/megtanulni, hogy egy-egy konténer hogyan működik, miért úgy, vagyis a mögöttes tudást elsajátítani (erre mondjuk nagyon jó a hivatalos Oracle anyag szerintem).
Tehát röviden: ha az alapok megvannak (koncepcionálisan) akkor nem hiszem, hogy aggódnod kellene.
A maven azért elég "alap", érdemes elsajátítani. Ha rajtam múlik, én azt használok Gradle helyett is.
Scala azért ahogy én látom elég sok helyen csak kiegészítő technológia, sajnos megvannak a maga zsákutcái, de csak támogatni tudlak!

-
emvy
félisten
> Hiszen ha egy List is final, utána ugyanúgy lehetett a List-be elemeket tenni.
Jo meglatas - ami neked feltunt, az a 'constness', vagy immutabilitas koncepciojanak a (majdnem teljes) hianya a Java-ban. Az altalanos immutabilitas igazan hasznos lehetne, konkurens programozasnal (is) egy aldas, meg egyebkent is sokkal atlathatobb, bugmentesebb kodot lehet irni akkor, ha az ember ahol csak lehet, 'ertekkel' es nem 'identitassal' dolgozik.
-
WonderCSabo
félisten
-
Soak
veterán
-
skoda12
aktív tag
Hali,
Valaki találkozott az alábbi hibával?
Eclipseben Help -> Install new software, kiválasztom az elérhetők közül az "All ...", de hiába keresek ott a pluginokra, semmi. Semmilyen találatot nem kapok...
Market Place-t néztem, de ott meg hiába töltöm le a cuccot, ha a plugin-t nem tartalmazza.Ha valamilyen plugint fel akarsz rakni, akkor eloszor az update siteot add hozza eclipseben.
-
Superhun
addikt
-
Karma
félisten
Nem feltétlen. Függ a disztribúciótól és attól is, hogy hogyan került fel a Tomcat7 a gépre.
De ha ilyen mappa már létezik, akkor jó eséllyel innen dolgozik. -
Soak
veterán
Hali.
Szerintetek hobbi projekt és tanulás céljából, érdemes Spring MVC-ben megcsinálni mondjuk egy ingatlan kereső projektet?
Én egy ilyet szívesen összekódolnék
. (Az, hogy van-e értelme, az más kérdés, de szívesen csinálnám)
PostgreSQL-el és HTML5-ös frontend framework-re gondoltam.
Nézegettem én a Spring frameworkot, de nem tudom, hogy mennyire jó ötlet... ahogy olvastam sokat kell konfigurálni (de még nem kezdtem el programozni benne).Amin, még gondolkoztam, az a Play framework. Állítólag ez egy "könnyű felépítésű" framework, ellenben a Springgel. Régen érdekelt a Grails is, abban csináltam meg a diplomamunkát, de annyira nem vonz a téma.
Az egyébként baj lehet, hogy a JavaEE-t csak úgy elméletben ismerem, egy kicsit, sosem programoztam benne, csak az SE-ben egyetemen. Nyáron akartam volna, de nem jött össze sajnos a meló mellett

A véleményeket előre köszönöm

+Ha már itt vagyok, melyik webszervert érdemes használni a play vagy springmvc esetén? Apache TomCat? Vagy a Jetty?

Megeri megcsinalni, sokat lehet belole tanulni. Nem igaz hogy a springet sokat kene konfiguralni. Egy alap projekt alig igenyel 30 sor konfigot, ellenben nagyon sok mindent tudsz kobfigolni ha szeretnel. Szedd le az sts plugint eclipsebe es csinalj egy sprin mvc projektet templatebol. Kapsz egy mukodo alkalmazast ahol az alapok teljesen vilagosak lesznek. Szerintem a legjobb framework backendre.
-
Superhun
addikt
Gyors megoldásként:
Document doc = builder.parse(new InputSource(new StringReader(file)));
Egyébként az InputStream-et kellene továbbadnod a ProgramParser-nek és akkor nem kell IOUtils és StringReader...
-
Superhun
addikt
Tényleg.....
Csak már annyira jó lenne rábírni, hogy működjön...
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
at ProgramParser.<init>(ProgramParser.java:69)
at RajzTabla.<init>(RajzTabla.java:76)
at Main.main(Main.java:47)A ProgramParser konstruktora dobja:
at ProgramParser.<init>(ProgramParser.java:69)
Ha jól látom azért, mert File-ként próbálod megnyitni a fájl tartalmát.

-
Superhun
addikt
-
Superhun
addikt
Hm, érdekes, ez a hiba jön vissza: (Karmás megoldás)
java.io.FileNotFoundException: C:\Users\bota.laszlo\Downloads\RobotXMLFeldolgozo\RobotXMLFeldolgozo\<?xml version="1.0"?>
<program>
<down\>
<left angle="90"\>
<forward units="200"\>
<reset\>
<\program>
(The filename, directory name, or volume label syntax is incorrect)
Pedig ha abszólut módon sima File() konstruktorban hívom meg az XML fájlt akkor okés minden, lefut a program... viszont ennél meg ez a hiba jön.Melyik metódus dobja ezt?
-
Superhun
addikt
-
Karma
félisten
Hali,
Maven-es projekttel kapcsolatban lenne kérdésem. Osztálybetöltővel szeretném a fájlt betölteni, de nem sikerül.
POM
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
Main
//tabla = new RajzTabla("src/main/resources/demo.xml");
tabla = new RajzTabla(IOUtils.toString(Main.class.getResourceAsStream("/demo.xml")));
A kikommentezett rész működik... De az alsó már nem, nem találja meg a fájlt. Nézegettem Stackoverflow-on is megoldást, de az IDE hibát ír ki rá, hgoy non-static context...További kódrészletek ha kellenek:
public RajzTabla(String xmlFajl) throws ParserConfigurationException, SAXException, IOException {
X = 250;
Y = 250;
irany = 0;
rajzolhat = false;
parser = new ProgramParser(xmlFajl);
}
public ProgramParser(String fajl) throws ParserConfigurationException, SAXException, IOException {
File file = new File(fajl);
...Ilyet probaltal mar?
tabla = new RajzTabla(IOUtils.toString(Main.class.getResourceAsStream("demo.xml")));
(Nincs / jel az elejen.)
-
Superhun
addikt
-
Lacces
őstag
Még most sem...
try {
if( args.length == 1 ) {
tabla = new RajzTabla(args[0]);
} else {
//tabla = new RajzTabla("src/main/demo.xml");
//tabla = new RajzTabla(IOUtils.toString(Main.class.getResourceAsStream("../../../demo.xml")));
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("demo.xml");
tabla = new RajzTabla(IOUtils.toString(is));
}
System.out.print(tabla);
}
catch (Exception e) {
System.out.println("Hiba lépett fel a fájl megnyitása közben!");
}
Ugyanúgy az Exception-be fut bele.Esetleg itt látod a Netbeans-es fájl szerkezetet:
Képernyő képWindows-os könyvtárszerkezet:
Könyvtárszerkezet WindowsonA futtatás eredménye:
URL kezdés:
/C:/Users/bota.laszlo/Downloads/RobotXMLFeldolgozo/RobotXMLFeldolgozo/target/classes/
/C:/Users/bota.laszlo/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar
/C:/Users/bota.laszlo/.m2/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar
/C:/Users/bota.laszlo/.m2/repository/ch/qos/logback/logback-core/1.0.11/logback-core-1.0.11.jar
/C:/Users/bota.laszlo/.m2/repository/ch/qos/logback/logback-classic/1.0.11/logback-classic-1.0.11.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/maven/doxia/doxia-module-docbook-simple/1.3/doxia-module-docbook-simple-1.3.jar
/C:/Users/bota.laszlo/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.jar
/C:/Users/bota.laszlo/.m2/repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar
/C:/Users/bota.laszlo/.m2/repository/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.jar
/C:/Users/bota.laszlo/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
/C:/Users/bota.laszlo/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar
/C:/Users/bota.laszlo/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
/C:/Users/bota.laszlo/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
/C:/Users/bota.laszlo/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
/C:/Users/bota.laszlo/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.jar
URL vége! -
Superhun
addikt
Még most sem...
try {
if( args.length == 1 ) {
tabla = new RajzTabla(args[0]);
} else {
//tabla = new RajzTabla("src/main/demo.xml");
//tabla = new RajzTabla(IOUtils.toString(Main.class.getResourceAsStream("../../../demo.xml")));
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("demo.xml");
tabla = new RajzTabla(IOUtils.toString(is));
}
System.out.print(tabla);
}
catch (Exception e) {
System.out.println("Hiba lépett fel a fájl megnyitása közben!");
}
Ugyanúgy az Exception-be fut bele.Futtasd le nekem ezt légy szíves és másold be ide a kiírt eredményt.
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());Import, ami kell:
import java.net.URL;
import java.net.URLClassLoader; -
Superhun
addikt
Akkor vmi classpath kínja van. Próbáld ezt:
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("demo.xml");
-
Superhun
addikt
Hali,
Maven-es projekttel kapcsolatban lenne kérdésem. Osztálybetöltővel szeretném a fájlt betölteni, de nem sikerül.
POM
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
Main
//tabla = new RajzTabla("src/main/resources/demo.xml");
tabla = new RajzTabla(IOUtils.toString(Main.class.getResourceAsStream("/demo.xml")));
A kikommentezett rész működik... De az alsó már nem, nem találja meg a fájlt. Nézegettem Stackoverflow-on is megoldást, de az IDE hibát ír ki rá, hgoy non-static context...További kódrészletek ha kellenek:
public RajzTabla(String xmlFajl) throws ParserConfigurationException, SAXException, IOException {
X = 250;
Y = 250;
irany = 0;
rajzolhat = false;
parser = new ProgramParser(xmlFajl);
}
public ProgramParser(String fajl) throws ParserConfigurationException, SAXException, IOException {
File file = new File(fajl);
...A Class.getResourceAsStream() metódus az osztály elérési útjához képest relatívan keresi a resource-t. Hol található a Main osztály?
-
skoda12
aktív tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?Kb mindegyik jo, amit fentebb ajanlottak. En speciel JSF-et szeretem, mert ha ranezel egy [richfaces] vagy [primefaces] showcase-re, akkor latod, hogy nagyon bonyolult ajaxos komponenseket is berakhatsz az oldaladba 5-10 sor koddal. Hatranya viszont, hogy altalaban oriasi DOM fakat general, igy lassu lehet.
-
modder
aktív tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?Hali, szerintem simán el lehet érni jó eredményeket szimplán servlet + stringtemplate ( http://www.stringtemplate.org/ ) kombinációval. Én még nem próbáltam, de kollégám szerint nagyon jó. A frankó az, hogy nem erőlteti rá a framework a saját technológiáit, hanem azt használsz amit szeretnél. Servlet a Controller szerepben, Stringtemplate a view szerepben, Model szerepben pedig vagy saját DAO-kat írsz JDBC-vel, vagy akármit gyakorlatilag használhatsz backendnek.
Egyébként pedig a Play frameworköt nagyon dícsérik, csak az a bökkenő, hogy ahhoz Scalát érdemes használni, amit nem egy-két nap megtanulni, szerintem.
-
TBG
senior tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?Szerintem a JSP+Spring(MVC,Security) páros jó lehet. Én személy szerint a GWT-t kultiválom, de kisebb oldalakhoz heavyweight.
-
TBG
senior tag
Másik kérdés. (bár ez másnak is mehet)
Ha van a POM.XML-ben (maven) pluginként hozzáadva a Jetty, akkor ezt automatikusan leszedi és elindít egy Jetty-t anélkül, hogy az telepítve van a gépen? Vagy kötelező, hogy ennek ellenére feltelepítve legyen a Jetty?
Ugyanis én Jetty 9.0-t raktam fel, de a kis plugin a Jetty 7-est használja, és ez olyan érdekes, ezen elgondolkodtam.
Nem kötelező. A pom.xml-ben lévő összes függőség letöltődik, feltéve ha elérhető a repókban. Viszont ha eltérő verziókat használsz mondjuk fejlesztői és produktív módban, akkor érhetnek meglepetések, szóval érdemes egységesíteni.
-
Lacces
őstag
Másik kérdés. (bár ez másnak is mehet)
Ha van a POM.XML-ben (maven) pluginként hozzáadva a Jetty, akkor ezt automatikusan leszedi és elindít egy Jetty-t anélkül, hogy az telepítve van a gépen? Vagy kötelező, hogy ennek ellenére feltelepítve legyen a Jetty?
Ugyanis én Jetty 9.0-t raktam fel, de a kis plugin a Jetty 7-est használja, és ez olyan érdekes, ezen elgondolkodtam.
-
skoda12
aktív tag
1. Mivel fejleszem? Fejlesztő környezet belövéséhez van valami leírásod?
(Én ugye Ubuntu terminálból mvn grails:run-app paranccsal nyomom, na de az nem semmi, hogy 700megát megeszik...)2. Én ettől az ízéttől tudok, de nagyon falra mászni, hogy a View-okat: Create, Update, hogyan lehet befolyásolni, esetleg felül írni? Ugyanis szeretném a beviteli mezők és labelek sorrendjét ÉN meghatározni, és ne pedig a groovy határozza meg! Ettől falra tudok mászni.
Soak, amikor tutorialt csináltam akkor tetszett, na de amikor magamtól kell, akkor ajaj, már nem hiába hagyták ki a sok részt a tutorialból.
1. Gyors probalgatasra jo a run-app, de vigyazni kell vele, mert attol meg, hogy o tudja futtatni a projektet, egy webcontainerben meg nem biztos, hogy futni fog. mvn grails:war-ral lehet war fajlt kesziteni es azt deployolni egy tomcatre pl. Ekkor jot elo nalunk is a gubanc, hogy csomo felesleges dolgot bepakolt a war fajlba alapbol. Pl servlet apit is, ami teljesen felesleges, mert minden webcontainer classpathjan ott van es emiatt be sem toltodik a program.
Amugy fejlesztokornyezetnek eclipse java ee verzioja pl jo, csak market placerol meg fel kell tenni a grails es groovy plugineket.2. Ezt nem tudom. A view layert megirtuk gwt-ben, igy olyan sorrendben dobaltunk ra controlokat, amilyenben akartunk.
-
skoda12
aktív tag
Mostanaban kell vele foglalkoznom. 3 csapat fejleszt grails plugineket egy nagyobb webalkalmazasba. Eleg lesujto tapasztalataink vannak vele. A tobbi projekten mar nem fogjak hasznalni.
De azert kerdezz, hatha tudok valaszolni. -
TBG
senior tag
Hm, nem tudom, én már 1 éve nézegetek Java-s állásokat (szerencsére Isten nem szeret
) és ha Spring-et kértek volna akkor azt külön jelezték, vagy még a Strut2-t láttam népszerűnek.Java EE kiselőadást kellett tartanom és hát, amikor nézegettem a fórumokat elég nagy vita van ebből a Java EE vs Spring dologból, én nem is mennék bele
. De én sosem dolgoztam bennek, csak tanulgattam őket, így nem tudok bővebbet mondani
.
Bár a Spring elég dinamikusan nő és nagyon megy a fejlesztés is ezerrel. Lehet tényleg érdemes a Spring-gel kezdeni, mert ahogy olvastam a Java EE7-hez még a cache api sem lesz benne, amit már nagyon vártak... (valami Jcache).Mivel foglalkoztam ASP.NET-tel nekem nem volt nehéz megérteni a Java EE alapjait
mástól nem hallottam vissza ezügyben semmit.Szerintem a Spring lassan platform lesz
(tényleg rengeteg eszköze van)Struts2 vs Spring? Nem összehasonlíthatóak

Szerintem a Spring lassan platform lesz
Ez a lényeges mondat. Annyi módosítással, hogy szerintem már az!

Miért Spring? Azért, mert nem kell hozzá applikációs szerver. Egy sima Tomcat/Jetty-vel is simán elszalad, ami egy EE alkalmazásról nem mondható el. Sőt, egy jól megírt Spring alkalmazás fut servlet konténerben és applikációs szerverben is. Mindamellett ugyanazt a funkcionalitást nyújtja, mint egy EE konténer (jó, dinamikus kontext nincs, de embert nem láttam még, aki használta volna)
Nem akarok flame-t nyitni!!
-
TBG
senior tag
Szerintem előbb döntsd el, hogy mit szeretnél pontosan a Java-tól és abba az irányba indulj el. A PHP-hoz képest itt nagy a "Birodalom" mérete.
Már maga a Java SE sem kis mennyiség. (GUI-k-ról nem beszélve, annotációk, amelyek a gyenge pontjaim, stb. Könyv függő, hogy mit sorolnak ide
Java EE végül is durván mondva, API-k gyűjteménye, párat már Modder is írt. (Najó talán az alapokat, a nagyon-nagyon alapokat érdemes átnézni esetleg egy szakdolgozatból, hogy elméletileg tud, hogy mi az. Amikor olyanokról beszélnek, hogy komponens, konténer, szervlet stb.)
Cég függő, hogy melyiket használják a Spring és a Java EE közül. Bár lehet a pénzszektorhoz a Java EE kell. Mondjuk a Morgan Stanley Spring szakembereket keress.
Ha webes alkalmazások érdekelnek akkor én inkább a Grails-et javasolnám. Egyszerű szimpla és a Spring-re épül (na meg az a csapat is fejleszti
). Java EE esetén meg ott a JSP és a JSF is... (itt viszont az ASP.NET-tel mutatt rokonságot... JSF az olyan Webforms benyomást kelti a JSP pedig az (asp.net)MVC és PHP benyomását). Grails-nél keveset kell a config fájlokban lennem 
És ott van még a fentebb említett nagy vállalati "irány" is.
Bár még én sem vagyok pro, de szerintem az irányt nem árt tudni

Az EE egyre inkább háttérbe szorul a Springgel szemben.
A Springgel érdemes kezdeni szvsz, mert aki ismeri a Springet, az nagyon könnyen tud átnyergelni EE-re, de csak EE ismerettel a Spring a vérhugyozás kategóriája.
Itt a 3-as Springről beszélek. Az előző változatok az XML tengere....bottal nem nyúlnék hozzá. Spring is támogat JSF,JSP techonlógiákat.
A Spring is egyébként egy qrva nagy framework/tool/solution halmaz.
Van Spring MVC, Sping JS, Spring Webflow, Spring Security.....sorolhatnám napestig. Ezekből a Spring Security és az MVC már de facto szabvány.
-
Soak
veterán
Szerintem előbb döntsd el, hogy mit szeretnél pontosan a Java-tól és abba az irányba indulj el. A PHP-hoz képest itt nagy a "Birodalom" mérete.
Már maga a Java SE sem kis mennyiség. (GUI-k-ról nem beszélve, annotációk, amelyek a gyenge pontjaim, stb. Könyv függő, hogy mit sorolnak ide
Java EE végül is durván mondva, API-k gyűjteménye, párat már Modder is írt. (Najó talán az alapokat, a nagyon-nagyon alapokat érdemes átnézni esetleg egy szakdolgozatból, hogy elméletileg tud, hogy mi az. Amikor olyanokról beszélnek, hogy komponens, konténer, szervlet stb.)
Cég függő, hogy melyiket használják a Spring és a Java EE közül. Bár lehet a pénzszektorhoz a Java EE kell. Mondjuk a Morgan Stanley Spring szakembereket keress.
Ha webes alkalmazások érdekelnek akkor én inkább a Grails-et javasolnám. Egyszerű szimpla és a Spring-re épül (na meg az a csapat is fejleszti
). Java EE esetén meg ott a JSP és a JSF is... (itt viszont az ASP.NET-tel mutatt rokonságot... JSF az olyan Webforms benyomást kelti a JSP pedig az (asp.net)MVC és PHP benyomását). Grails-nél keveset kell a config fájlokban lennem 
És ott van még a fentebb említett nagy vállalati "irány" is.
Bár még én sem vagyok pro, de szerintem az irányt nem árt tudni

Köszi, ezekkel tisztában vagyok, nem csak úgy poénból kezdtem el foglalkozni vele, hanem azért mert nem sokára juniorként munkába állok és ugyan intenzív oktatáson részt fogok venni, már most el szeretnék vele kezdeni foglalkozni, mert van rá időm. A kérdés lényege az volt, hogy felesleges időt ne pazaroljak arra amire nem kell.
TBG : Köszi ezt már megtaláltam, de egy ideje nézegetem már, hogy akkor most mi is van
. Még nem találtam meg a fogást, hogy miként kezdjem el, az SE tutoriallal lassan végzek. -
TBG
senior tag
Hi, nem értem a következő kódrészletben, hogy a this.tires.clear() hogy-hogy törli a metódus paraméterében lévő t paramétert is?
public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + carTires.size());
}Kimenet:
Before: 2
After (1): 0
After (2): 0Aminek nem örülök, azt tudom, hogy a this.tires.clear() csinálja ezt a mókát, ha ezt kikomenntezem, akkor az After-ek értéke 4 lesz... olyan, mintha a t paraméter tartalmát is törli...
Mintha az addAll(t)-nél üres lenne a t paraméter.Az egészet nem értem egyébként.
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));Ez a 3 sor megcsinálja azt, amit itt szeretnél tenni...
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);Gondolom, azt vártad, hogy lesz egy 4 elemű listád [10,11,10,11] értékekkel? Vagy mi volt az elképzelés?
Egyébként így működött volna:public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
Car anotherCar = new Car();
anotherCar.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + anotherCarTires.size());
} -
WonderCSabo
félisten
Hi, nem értem a következő kódrészletben, hogy a this.tires.clear() hogy-hogy törli a metódus paraméterében lévő t paramétert is?
public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + carTires.size());
}Kimenet:
Before: 2
After (1): 0
After (2): 0Aminek nem örülök, azt tudom, hogy a this.tires.clear() csinálja ezt a mókát, ha ezt kikomenntezem, akkor az After-ek értéke 4 lesz... olyan, mintha a t paraméter tartalmát is törli...
Mintha az addAll(t)-nél üres lenne a t paraméter.A Java mindenhol referenciákat használ (kivéve a primitív típusokat, de itt most nincs olyan). Feltételezem a car.getTires() fv. car.tires listát adja vissza. Mivel referenciákról van szó, ekkor a main lokális változója, a carTires illetve a car.tires mező ugyanarra az objektumra fog mutatni. Ezután átadod a car.setTires(carTires) - el a carTirest, ami törli a belső saját listát. De a carTires is a belső listára mutat, tehát ugyanazt a listát törlöd ki! Ezután hozzáadod a belső listához ugyannak a már üres listának az elemeit, nyilván továbbra is üres marad.
Ez egy ismert jelenség, és direkt kitaláltak rá olyan mintákat, amivel ezt el lehet kerülni. Az egyik ilyen megoldás a defensive copy.
-
modder
aktív tag
Plusz, arra van valami example a neten / tudnál javasolni vagy kereső szót, hogy amit ajánlottál a statikus html oldalak, vagy amit generálok, hogy azt hogyan lehet megvalósítani a singleton-nal?
Fúú, ez nagyon érdekel.Köszi a részletes választ
.
.
Mert majd webszervert akarok bérelni, és hogy ha jön napi szinten a requestek, akkor hogyan hat rá a terhelésre, és ennek utána olvasva ellentétes infókat kaptam... (bár néha a net tele van szútyokkal).
És elbizonytalanodtam...Nem tudom pontosan hogy akarod megoldani a megjelenítést. Régen volt JSP. ebből ugye servlet generálódott, ahol a JSP statikus részei final stringek voltak, tehát szépen benne maradt a memóriában, nem hozta őket létre újból minden requestnél. Én JSF-et használok, de egyszerű weboldalakra kiváló és nagyon kiforrott a String template.
Én arra gondoltam, hogy ha magát a template-et, mint Stringet egy Singleton osztályba beolvasod egyszer pl. fájlból, amikor szükség van rá, és utána onnan éred el, akkor a Singletonod alkalmazáson belül de, requestek között megmarad, így a beolvasott string template is megmarad a memóriában. Sőt, requestenként ugyanazt a singleton-t fogod elérni. Persze fontos, hogy ezt az osztályt tényleg csak stringek tárolására használd, és ne legyen benne semmi állapot a template stringeken kívül. Plusz a fájlból beolvasás metódusát és a getInstance metódusát nem árt egy mutex-szel védeni, elkerülendő, hogy két thread (két szimultán request) egyszerre inicializálja.
Ez amúgy csak most jutott eszembe a kérdéseddel kapcsolatban, lehet hogy valahol hibádzik a gondolatmenetem, de tekintve, hogy egy JVM-en és egy classloader hierachián belül ugyanazt az osztálypéldányt használja az alkalmazásod requestektől függetlenül, gondolom működik.
-
modder
aktív tag
Hali,
Fontos kérdés, ha van valakinek tapasztalata kérem szóljon
.
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)
Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).
Idézlek másik fórumról:
Én laptopon futatom a linux + java webszervert (Jetty - baromi jó, gyors és keveset eszik ajánlom mindenkinek) + mongot + (jelenleg mysql), de összeségében még nem láttam őket együtt 1GB ram felé menni
De akkor mi a francért kérdezel ilyeneket?
-
modder
aktív tag
Hali,
Fontos kérdés, ha van valakinek tapasztalata kérem szóljon
.
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)
Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Ezt hol olvastad meglepődnék ha így lenne. Totál elveszítené a webszerver az értelmét, és gyakorlatilag CGI-ként futtatnád így az alkalmazásodat.Tessék, itt van egy összehasonlítás arról, hogy melyik webszerver mennyi memóriát használ idle állapotban http://www.jvmhost.com/articles/memory-usage-comparison-of-java-application-servers-and-applications -- 1 jetty instance átlag 50 megabyte.
Erre jön még az alkalmazásod memóriaigénye, ami nagyban függ az alkalmazásod felépítésétől, az output nagyságától. Pl. ha csak az outputot nézzük (a belső struktúrát nem), akkor átlagosan 16 bites karakter hosszal számolva 20 megabyte memóriába 1 250 000 karakter fér bele. ami átlagos karakter per oldal alapján ~ 43 wikipedia oldalnak felel meg.
Erre jöjjön rá még az alkalmazásod belső struktúrája. Azért látni, hogy ez egy eléggé elnagyolt példa, egy kis weboldal nem fog 20 megabyteot elhasználni oldallekéréseknél, max pár megabyte. Nem beszélve arról, hogy statikus adatokat (pl. html template-eket amibe csak beszúrod a generált tartalmat) megosztasz a lekérdezések között, mert bent marad a memóriában. Pl. ha egy singletonban tárolod ezeket, és nem próbálod meg beolvasni a fájlból minden egyes oldallekéérésnél.
Szóval egy relative kis weboldal max pár megabyte memóriát fog lefoglalni requestenként.Plusz korlátozhatod a memóriát JVM beállításokkal (pl. max heap size) meg hasonlók, így ha kezd kifogyi a memóriából a webszerver, a GC majd elintézi a régi objektumokat. Szerintem elég neki kb 500 megabyte memóriát adni.
Szerintem ami a legfontosabb, ha kevés memóriát szeretnél használni, hogy ahol dinamikus string összefűzés van, ott használj StringBuildert vagy StringBuffert (nem emlékszem melyik a nem threadsafe de azt). Pl. A stringet több objektum, függvény állítja elő, vagy cikluson belül generálod. Különben a String + operátor új stringet hoz létre mindig. Kiemeltem, hogy dinamikusan, mert ha csak kényelmi szempontból egy ilyen változót deklarálsz, hogy
String fejlec = "Üdvözöllek \n" + "a\n" + "weboldalamon!"; akkor a fordító automatikusan egybefűzi ezeket a stringeket, úgyhogy no para.Szó ami szó, napi 200 lekérdezésre simán elég a 2GB, de ha spórolni akarsz adj rá 500 megabyte-ot, az is bőven elég lesz.
-
Superhun
addikt
Módosítani lehet, de hozzáadni új karaktert is? Úgy hogy ugyanaz az objektum.
Na igen, az első variáció, azt tudtam... az a literal pool. Erről olvastam is.
A második jah, abban igazad van, azt most megnéztem anno kódot, és rosszul következtettem rá, mert ott nekem str1.equals(str2) van..., Igen, és az objektum a kupac memória kerül, ahol a gc garázdálkodik és csak a lokális változók és a tagfüggvények kerülnek a verembe.
Igaz, félre beszéltem, köszönöm a helyesbítést

Módosítani lehet, de hozzáadni új karaktert is? Úgy hogy ugyanaz az objektum.
Igen, de te nem ezt mondtad
. Mindegy, lényeg hogy értjük egymást. 
-
Superhun
addikt
Nekem sem tiszta, mit akarsz pontosan, de lehet én vagyok lüke hozzá.
Ez lehet az amire gondoltál szerintem:
String result = title + " (" + year +")\n" +
"A " + director + " film.\n\n" +
(role1 + "\t" + actor1 + "\n" +
role2 + "\t" + actor2 + "\n" +
role3 + "\t" + actor3 + "\n" +
role4 + "\t" + actor4 + "\n" +
change).toUpperCase();
System.out.println(result);
role1-től a change-ig minden nagybetűs a többit meg kicsiben hagyja a result Stringben.
A toUpperCase() után oda lehet szúrni a toStrin()-et is de ez nem kötelező, anélkül is nagybetűsre alakítja.Karma hsz-e is hasznos. De szerintem még nem tartasz ott, hogy tud, ő miért javasolta a StringBuildert
Bár az is, igaz, hogy inkább forciklusban használják a StringBuildert.Ennek oka röviden, hogy a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan. Ha úgy mond konketenálsz egy String-et akkor új String jön létre.
role1 + "t" -> akkor ez egy új String objektum ami a memóriában van, és nem a régi módoítottad, ami szintén a memóriában van, és marad a program végéig! StringBuilder esetében pedig a régit tudod módosítani, és így csak String objektum van a memóriában. A JVM nem módosítja sosem a Stringeket, hanem újat hozz létre mindig! És ezzel eszi a memóriát. És ez azért is baj, mert a Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket.
Bár van egy előnye ennek, az ha mégegyszer egy ugyanolyan String objektum jön létre (ugyanaz az értéke), akkor a JVM nem hozz létre új Strng-et hanem egész egyszerűen már egy meglévőre hivatkozik.
De ha tévedet, jönnek a többiek és nagy örömmel kijavítanak.
"a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan"
Valójában csak a mérete, a karaktereket módosíthatjuk benne a charAt metódussal, O(1) időben.

"a Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket"
Ezt nem gondolhatod komolyan. Elég sok alkalmazás kapna így out of memory-t
. Valójában úgy áll a dolog, hogy a kódban definiált Stringek (String str = "abc") az úgynevezett literal pool-ban lévő elemekre fognak hivatkozni, ami a heap-től független, így a GC-től is. A futás időben keletkezett String objektumok viszont mindig a heap-re kerülnek, amiket pedig a GC eltakarít, ha már nincs rájuk hivatkozás.Példa:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);Eredmény: true
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);Eredmény: false
-
Speeedfire
félisten
-
Karma
félisten
-
Lacces
őstag
Ok, most már értem. NetBeans-sel ment a debug, és látom, hogy a System.out.println()-ben az összefűzés után egy új objektum lett, és erre az objektumra hívta meg a toString()-et.
-
Karma
félisten
Sziasztok!
Téma Polimorfizmus
Osztály:
public class Szerelveny {
protected int kocsikSzáma;
protected boolean földAlatti;
public Szerelveny(int kocsikSzáma) {
this(kocsikSzáma, false);
}
public Szerelveny(int kocsikSzáma, boolean földAlatti) {
this.kocsikSzáma = kocsikSzáma;
this.földAlatti = földAlatti;
System.out.println("Új szerelvény: " + this);
}
@Override
public String toString() {
return "szerelvény (" + kocsikSzáma + " kocsi, " + (földAlatti ? "földalatti" : "felszíni") + ")";
}
public Szerelveny összefűz(Szerelveny sz) {
boolean b = földAlatti && sz.földAlatti;
System.out.println("Sz + Sz: " + this + " + " + sz);
return new Szerelveny(kocsikSzáma + sz.kocsikSzáma, b);
}
}Main osztály függvénye:
Szerelveny szsz = new Szerelveny(3);
Szerelveny szm = new MetroSzerelveny(4);
System.out.println(szsz.összefűz(szm));Eredmény:
// Első utasításra
Új szerelvény: szerelvény (3 kocsi, felszíni)
// Második utasításra
Új szerelvény: metró (4 kocsi, földalatti)
Új MetroSzerelveny: metró (4 kocsi, földalatti)
// Harmadik utasításra
Sz + Sz: szerelvény (3 kocsi, felszíni) + metró (4 kocsi, földalatti)
Új szerelvény: szerelvény (7 kocsi, felszíni)
szerelvény (7 kocsi, felszíni)Az első kettő utasításra a kiírás az tiszta sor.
Viszont a harmadik utasításnál nem értem, a "szerelvény(7 kocsi, felszíni)" sort minek írja még ki? Az "Sz+Sz..." és "Új szerelvény: szerelvény(7 kocsi, felszíni)" is rendben van, de az utolsót nem értem, hogy azt miért írja ki.Debugot még próbálgatom, de az Eclipsenek már 5. alkalommal "fagy le".
Mert az utolsó sor egy return new... A konstruktor meg ezt írja ki.
-
Speeedfire
félisten
Tényleg így van, thx.

-
modder
aktív tag
Hali,
Glassfish egy teljeskörű java EE implementáció (bár van web profile-ja is, ami kicsit kevesebbet tud).
Springhez nem kell Java EE alapesetben, csak egy szervlet konténer, tehát a Tomcat teljesen megfelel. Elvileg egyébként egy teljesen alap Jetty is megfelel neki: -
Superhun
addikt
Aha, ha lehet tovább boncolgatnám a témát, valamit félre értelmezek szerintem... ahogy jobban megnéztem a példát.
Integer s = new Integer(8); // ez oké
Integer t = new Integer(8); // így s és t különböznek
Integer t = 8; // ez nem oké
Integer s = 8; // így s és t megegyezik
Ahogy nézem a forráskódot, mindig egy new Integer(i)-vel tér vissza, ami ugye objektum, de s és t az utolsó esetben megegyezik! Pedig ezek is objektumok. Vagy valahol a rendszer mélyén felismeri ezt JVM és oda hivatkoztatja az s és t változókat?A 8 esetében ez hívódik meg:
return IntegerCache.cache[i + offset];
ami már nem hoz létre új objektumot, csak egy referenciát ad vissza a már meglévő 8-at boxoló Integer objektumhoz.
-
Karma
félisten
Aha, ha lehet tovább boncolgatnám a témát, valamit félre értelmezek szerintem... ahogy jobban megnéztem a példát.
Integer s = new Integer(8); // ez oké
Integer t = new Integer(8); // így s és t különböznek
Integer t = 8; // ez nem oké
Integer s = 8; // így s és t megegyezik
Ahogy nézem a forráskódot, mindig egy new Integer(i)-vel tér vissza, ami ugye objektum, de s és t az utolsó esetben megegyezik! Pedig ezek is objektumok. Vagy valahol a rendszer mélyén felismeri ezt JVM és oda hivatkoztatja az s és t változókat?A második esetben történik a már a legelején emlegetett autoboxing, tehát a JVM látja a primitív int 8-ast és hogy Integer objektum kellene, ezért automatikusan meghívja az Integer.valueOf() függvényt rá.
És ez a függvény, mint látszott, belső cache-t használ a kis számokra, ugyanazt a konkrét objektumot adja vissza.
-
Karma
félisten
-
Gyuri16
senior tag
Ühüm, akkor fontos, hogy konstruktorral hozzam létre

Integer s = 8;
Integer t = 8;
Így meg a kettő ugyanaz lesz... egyébként ilyenkor s és t primitív? Vagy 2 külön hivatkozó változó, ami ugyanarra az Integer objektumra mutat a kupacban?Karma: "A gyakorlatban meg az Integer.valueOf-ban van ez a cache implementáció." Milyen cahce implementáció van ott?
Nekem ez új.Integer s = 8;
ilyenkor autoboxing miatt az Integer.valueOf(int) kerul meghivasra, ami cacheli a -128 tol 127ig terjedo szamokat, hogy gyorsabb legyen:private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
} -
Superhun
addikt
Igen. Az első két feltételnél primitívvé konvertálja az objektumokat és úgy hasonlítja össze, a 3.-nál viszont a == operátor azt vizsgálja, hogy a két referencia ugyanarra az objektumra hivatkozik-e, ami természetesen nem lesz igaz, így mindhárom feltétel mindig teljesül.
-
Davs
tag
Sziasztok!
Olvasom a hátékony java könyvet, nem rossz könyv, de néha hatalmas ugrásnak érzem.
Lenne kérdésem, most van egy kompozicíó vs osztály öröklés téma.Ezt nem teljesen értem:
"Az öröklés csak akor játszik igazián szerepet, amikor az alosztály tényleg valódi altípusa a szuperosztálynak. Más szavakkal egy B osztály csak akkor bővíthet egy A osztályt, ha a két osztály között megvan a megfelelőségi kapcsolat. Mielőtt B-vel bővítenénk A-t, tegyük fel a kérdést: Minden B megfelel A-nak? Nemleges válasz esetén a B esetleg tartalmazzon egy A privát példányt és az API legyen kisebb és egyszerűbb."
Mi a valódi altípus, és megfelelőségi kapcsolat? Nekem ezek a fogalmak nem igazán derültek ki.Meg a könyv azt írta, hogy a Kompozíció végül is a Decorator tervezési minta... Azzal megtudnám tanulni ezt a kompozíciót?
.
Ez sem rossz amit ír a könyv ír, de nekem akkor sem tiszta a példa alapján belekavarodok...És amúgy is érdemes használni a Kompozíciót?
class A {}
class B extends A {} -> ez oroklodes
class C {
public A AObject = new A() ; -> ez kompozicio
}B objektum eseten minden public es protected dolgot (metodust es valtozot) oroklunk az A-bol. B-ben tudunk hozzatenni az A-bol orokolt dolgokhoz, de altalanosan elmondhato, hogy ami A-ban van (es public) az a B-ben is ott van, ezert lenyegeben mondhatni, hogy a "B" class "A" tipusu is. Mivel a B az A-tol orokol, az alabbi kodreszlet valid:
A Avaltozo = new B() ;Kompozicio eseten nem csinalhatsz ilyent: A Avaltozo = new C() ; -> mivel a C nem orokol az A-tol, egyszeruen a C csak tartalmaz egy A-t.
Oroklodes = "olyan, mint" -> B orokol A-tol -> B olyan, mint az A ( B az A altipusa)
Kompozicio = "van neki" -> C-ben van "A-kompozicio" -> C-nek van A-jaNemtudom, mennyire vilagos ebbol, szerintem rossz tanar lennek, de ha mar ennyit utottem a gombokat, azert elkuldom, hatha van benne valami ertheto is
(+ remelem nem tevedtem nagyot sehol se) -
wmati
addikt
bővebben?

Ha megy az angol: itt egy rövid leírás a javac-ról.
Vagy ez magyar a jegyzet 9. oldalától a 11.oldalig olvasd el (a pdf lapon lévő oldalszámok alapján)
a nyelvet úgy ahogy értem de a fordítás nem megy még
-
wmati
addikt
Nem tudsz, le kell fordítani .class kiterjesztésűre. És ezt a .class fájlt tudod futattni.
Fordításhoz a javac-ot használd, beírod parancssorba például: javac xy.java
Javac-hoz kell a Java SDK, hogy a gépeden legyen.videó a használatról.
Esetleg használj valamilyen IDE-t (NetBeans, Eclipse)
áhh nem tudom
-
Davs
tag
Hali!
Az lenne a kérdésem, hogy milyen könyvet/online anyagot használsz a tudásod elmélyítéséhez?
Többieknek:
Kellene egy kis segítség definiáció értelemzésében.
Mit jelentnek a következő kifejezések, nekem nem tiszta
"változtatható objektum", "végleges objektum", "végleges mező", én igazából itt a final kulcsszóra gondoltam, de nem vagyok benne biztos.
a final valtozo erteket nem lehet valtoztatni (objektum eseteben csak a referencia fix)
final metodust nem lehet felulirni (override) orokolt objektumban
final osztalybol pedig nem lehet orokolni..
kb ennyi -
Karma
félisten
Hali!
Az lenne a kérdésem, hogy milyen könyvet/online anyagot használsz a tudásod elmélyítéséhez?
Többieknek:
Kellene egy kis segítség definiáció értelemzésében.
Mit jelentnek a következő kifejezések, nekem nem tiszta
"változtatható objektum", "végleges objektum", "végleges mező", én igazából itt a final kulcsszóra gondoltam, de nem vagyok benne biztos.
Több mint valószínű, hogy a "végleges" a final kulcsszó retardfordítása. De ha a definíciókat is idemásolnád a jegyzetből, talán biztosra is mehetnénk.
-
Davs
tag
Tényleg, itt mi a hiba? a static kulcsszó hiánya?
Most nincs semmilyen java előttem, és így fejben keresek megoldást.hunfatal: úgy tűnik, hogy a java 1.5-től elérhetőek az annotációk. (Az override az pedig annotáció...)
Java annotation - wikipediaNincs hiba, a ForNameCreator class felulirta a types() fuggvenyt, ahogy kell. Az zavart ossze engem, hogy rogton a class elejen volt egy szinten types nevu valtozo (ArrayList) es azt hittem, hogy valahogy az irja felul a fuggvenyt.
-
Mukorka
addikt
Hali!
Köszönöm a válaszokat! Athlon64+, Davs

Most jövők elméleti / gyakorlati kérdésekkel, majd. Leporoltam a Java könyveket, és erősen Java hivő lettem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A beágyazott osztályok, még odébb vannak, de ha ott tartuk, feltétlenül szólok!
Classloader-t nem ismerem, feliírtam magamnak, az általában melyik nagyobb témakörrel együtt szerepel? Beágyazott osztályoknál? Nekem még ez új volt.
Mindenképp utánaolvasok majd 
Ezt jó volt megjegyezni, hogy a static osztály, csak belső lehet.
Akkor viszont, jöjjön a kérdés:
"Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból."
1.
- Miért fér hozzá a tartalmozó osztály? Hiszen ha a belső osztály privát, akkor elméletben nem férek hozzá. De mégis hozzáfér az őt tartalmazó osztály? Miért?
Például van az A osztáy privát, a B osztály public, akkor az A hozzáfér a B osztály tagfüggvényeihez/adattagjaihoz, de a B nem férhet hozzá az A-hoz.2.
- Milyen gyakorlati haszna van, és mikor érdemes belső static osztályt használni a sima osztály helyet?3.
- Ősosztály példánya hajthat-e végre, az alosztály példányán műveleteket, ha az privát láthatóságú.
Példa.: Ez így lehet nem állja meg a helyét, meg én Interfésszel valósítanám meg, de elméleti kérdés... Legyen adott egy publikus Állat ősosztály, itt van például az ugat() metódus. És van a publikus Kutya és a privát Farkas alosztály.
Legyen egy függvény az állatban: hajtóvadászat(Állat állatPéldány) néven, amely meghívja az állat példányhoz tartozó ugat() metódust.
Ha ezt a hajtóvadászat(Állat állatPéldány) függvényt meghívom úgy, hogy a paraméterben egyszer a Kutya osztály egy példánya van, akkor azon az ugat()-ot végre tudja hajtani, de ha Farkas osztály egy példányánál már nem tudja meghívni az ugat() fv-t igaz? Gondolom ilyenkor a JVM RuntimeException-t kéne dobnia.4.a
Ha egy ősosztály privát (és vele együtt, minden adattag, és tagfv.), és rendelkezik alosztállyal, akkor a fordító automatikusan legenerálja az alosztály számára is a privát adattagokat/tagfv-t?
4.b
Vagy az ősosztály protected/privát, és van benne 1 privát adattag. Akkor az alosztály is megkap minden egyes adattagot, még a privát-ot is, csak annyi a különbség, hogy nem fér hozzá az ősosztály ezen privát adattagjához.
Pl: Állatnak van a privát futás(), és van a publikus Farkas alosztály, akkor a farkas példányának is van futás() nevű fv-e, igaz?
De akkor megint itt jön a helyetesíthetőség elve, hogy ha Egy Feldolgozó osztályban (Például egy függvényt, amely paraméterben egy állat osztályt vár)meghívom az Állat osztály egy állat nevű példányát, akkor a futás() fv-hez nem férek hozzá. És ha az állat példány helyett egy farkas példányt hívok meg, akkor annak a futás()-a meghívható...
Nem tudom, hogy mennyire voltam érthető...5.
Akkor ha egy osztály publikus vagy privát, és az adattagjainál nincs külön feltüntetve, hogy milyen láthatóságú, akkor automatikusa az osztály láthatóságát kapják meg, igaz?
arn: http://nagygusztav.hu/java-programozas -ez az előbb említett fórumtárs által javasolt könyv, egy sokkal rövidebb és magyarosított változata.(néha van egy olyan érzésem, hogy csak egy fordító progi lett ráeresztve az eredeti könyvre...) A Thinking in Java könyv, tényleg nem rossz, de én félbe hagytam anno. De nagyon részletes, és még Design Pattern példák is vannak benne!
a 3. kérdésed fordítási hibát okozna, nem exceptiont. A farkas osztály privát, példányként hogy adnád át?
-
D4nte
csendes tag
Hali!
Köszönöm a válaszokat! Athlon64+, Davs

Most jövők elméleti / gyakorlati kérdésekkel, majd. Leporoltam a Java könyveket, és erősen Java hivő lettem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A beágyazott osztályok, még odébb vannak, de ha ott tartuk, feltétlenül szólok!
Classloader-t nem ismerem, feliírtam magamnak, az általában melyik nagyobb témakörrel együtt szerepel? Beágyazott osztályoknál? Nekem még ez új volt.
Mindenképp utánaolvasok majd 
Ezt jó volt megjegyezni, hogy a static osztály, csak belső lehet.
Akkor viszont, jöjjön a kérdés:
"Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból."
1.
- Miért fér hozzá a tartalmozó osztály? Hiszen ha a belső osztály privát, akkor elméletben nem férek hozzá. De mégis hozzáfér az őt tartalmazó osztály? Miért?
Például van az A osztáy privát, a B osztály public, akkor az A hozzáfér a B osztály tagfüggvényeihez/adattagjaihoz, de a B nem férhet hozzá az A-hoz.2.
- Milyen gyakorlati haszna van, és mikor érdemes belső static osztályt használni a sima osztály helyet?3.
- Ősosztály példánya hajthat-e végre, az alosztály példányán műveleteket, ha az privát láthatóságú.
Példa.: Ez így lehet nem állja meg a helyét, meg én Interfésszel valósítanám meg, de elméleti kérdés... Legyen adott egy publikus Állat ősosztály, itt van például az ugat() metódus. És van a publikus Kutya és a privát Farkas alosztály.
Legyen egy függvény az állatban: hajtóvadászat(Állat állatPéldány) néven, amely meghívja az állat példányhoz tartozó ugat() metódust.
Ha ezt a hajtóvadászat(Állat állatPéldány) függvényt meghívom úgy, hogy a paraméterben egyszer a Kutya osztály egy példánya van, akkor azon az ugat()-ot végre tudja hajtani, de ha Farkas osztály egy példányánál már nem tudja meghívni az ugat() fv-t igaz? Gondolom ilyenkor a JVM RuntimeException-t kéne dobnia.4.a
Ha egy ősosztály privát (és vele együtt, minden adattag, és tagfv.), és rendelkezik alosztállyal, akkor a fordító automatikusan legenerálja az alosztály számára is a privát adattagokat/tagfv-t?
4.b
Vagy az ősosztály protected/privát, és van benne 1 privát adattag. Akkor az alosztály is megkap minden egyes adattagot, még a privát-ot is, csak annyi a különbség, hogy nem fér hozzá az ősosztály ezen privát adattagjához.
Pl: Állatnak van a privát futás(), és van a publikus Farkas alosztály, akkor a farkas példányának is van futás() nevű fv-e, igaz?
De akkor megint itt jön a helyetesíthetőség elve, hogy ha Egy Feldolgozó osztályban (Például egy függvényt, amely paraméterben egy állat osztályt vár)meghívom az Állat osztály egy állat nevű példányát, akkor a futás() fv-hez nem férek hozzá. És ha az állat példány helyett egy farkas példányt hívok meg, akkor annak a futás()-a meghívható...
Nem tudom, hogy mennyire voltam érthető...5.
Akkor ha egy osztály publikus vagy privát, és az adattagjainál nincs külön feltüntetve, hogy milyen láthatóságú, akkor automatikusa az osztály láthatóságát kapják meg, igaz?
arn: http://nagygusztav.hu/java-programozas -ez az előbb említett fórumtárs által javasolt könyv, egy sokkal rövidebb és magyarosított változata.(néha van egy olyan érzésem, hogy csak egy fordító progi lett ráeresztve az eredeti könyvre...) A Thinking in Java könyv, tényleg nem rossz, de én félbe hagytam anno. De nagyon részletes, és még Design Pattern példák is vannak benne!
5. Annyi azért legyen már tisztázva (csak azért, mert nem értem, miért pont publikus meg privát láthatóságot írtál itt), hogy egy normál osztály (nem belső) csak publikus, vagy ha nem teszel ki láthatósági jelölést, akkor csomagszintű (package) láthatóságú lehet.
A belső osztály már más kategóriába esik, az lehet public, protected, private, package (nincs kulcsszó írva) szintű is.
(Még itt érdemes megemlíteni, ha esetleg itt lehetne kavarodás, hogy az Interface egy külön eset, ott minden tag public alapból. (mindegy hogy kiírod, vagy sem))
Végül pedig az igazi kérdésedre, az előbb leírtak mellett, NEM a válasz, már fentebb is írták. Ha nincs feltüntetve, hogy milyen láthatóságú egy osztály tagja, akkor csomagszintű lesz.
3. Nem tiszta nekem, hogy most belső osztályokkal (remélem nem), vagy normállal akartad megoldani, de ilyen dolgoknál (meg a legtöbbnél szintén) egyszerűen ki kell próbálni, ha tudod.
public class Allat {
void ugat() {
System.out.println("Állatugatás");
}public static void hajtovadaszat(Allat allatPeldany) {
allatPeldany.ugat();
}public static void main(String[] args) {
Allat allat = new Allat();
Kutya kutya = new Kutya();
Farkas farkas = new Farkas();hajtovadaszat(allat);
hajtovadaszat(kutya);
hajtovadaszat(farkas);
}
}class Kutya extends Allat {
void ugat() {
System.out.println("Kutyaugatás");
}
}class Farkas extends Allat {
void ugat() {
System.out.println("Farkasugatás");
}
}kimenet:
Állatugatás
Kutyaugatás
FarkasugatásEnnél a példánál tökéletesen működik a polimorfizmus. Ne zavarjon meg, hogy a leszármazott osztályok csomagszintűek lettek, most azért igazából, mert egy fájlba tettem (de lényegtelen ennél e példánál éppen).
Próbálgasd módosítani a láthatóságokat, és nézd az eredményt, így kitapasztalhatod a dolgokat.(Itt az Allat osztály és az ugat metódusa lehetne inkább abstract, de kérdésedhez nem kapcsolódik igazából)
Csináltam egy belső osztályos verziót is, talán közelebb van ahhoz amit gondoltál.
másikverzióJava tutorials-t gyors, Thinking in java-t részletes tanuláshoz én is ajánlom, ha jól átveszed benne a dolgokat, a kérdéseid mind megválaszolódnak, plusz, ami nem világos, próbáld is ki!
-
Davs
tag
Hali!
Köszönöm a válaszokat! Athlon64+, Davs

Most jövők elméleti / gyakorlati kérdésekkel, majd. Leporoltam a Java könyveket, és erősen Java hivő lettem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A beágyazott osztályok, még odébb vannak, de ha ott tartuk, feltétlenül szólok!
Classloader-t nem ismerem, feliírtam magamnak, az általában melyik nagyobb témakörrel együtt szerepel? Beágyazott osztályoknál? Nekem még ez új volt.
Mindenképp utánaolvasok majd 
Ezt jó volt megjegyezni, hogy a static osztály, csak belső lehet.
Akkor viszont, jöjjön a kérdés:
"Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból."
1.
- Miért fér hozzá a tartalmozó osztály? Hiszen ha a belső osztály privát, akkor elméletben nem férek hozzá. De mégis hozzáfér az őt tartalmazó osztály? Miért?
Például van az A osztáy privát, a B osztály public, akkor az A hozzáfér a B osztály tagfüggvényeihez/adattagjaihoz, de a B nem férhet hozzá az A-hoz.2.
- Milyen gyakorlati haszna van, és mikor érdemes belső static osztályt használni a sima osztály helyet?3.
- Ősosztály példánya hajthat-e végre, az alosztály példányán műveleteket, ha az privát láthatóságú.
Példa.: Ez így lehet nem állja meg a helyét, meg én Interfésszel valósítanám meg, de elméleti kérdés... Legyen adott egy publikus Állat ősosztály, itt van például az ugat() metódus. És van a publikus Kutya és a privát Farkas alosztály.
Legyen egy függvény az állatban: hajtóvadászat(Állat állatPéldány) néven, amely meghívja az állat példányhoz tartozó ugat() metódust.
Ha ezt a hajtóvadászat(Állat állatPéldány) függvényt meghívom úgy, hogy a paraméterben egyszer a Kutya osztály egy példánya van, akkor azon az ugat()-ot végre tudja hajtani, de ha Farkas osztály egy példányánál már nem tudja meghívni az ugat() fv-t igaz? Gondolom ilyenkor a JVM RuntimeException-t kéne dobnia.4.a
Ha egy ősosztály privát (és vele együtt, minden adattag, és tagfv.), és rendelkezik alosztállyal, akkor a fordító automatikusan legenerálja az alosztály számára is a privát adattagokat/tagfv-t?
4.b
Vagy az ősosztály protected/privát, és van benne 1 privát adattag. Akkor az alosztály is megkap minden egyes adattagot, még a privát-ot is, csak annyi a különbség, hogy nem fér hozzá az ősosztály ezen privát adattagjához.
Pl: Állatnak van a privát futás(), és van a publikus Farkas alosztály, akkor a farkas példányának is van futás() nevű fv-e, igaz?
De akkor megint itt jön a helyetesíthetőség elve, hogy ha Egy Feldolgozó osztályban (Például egy függvényt, amely paraméterben egy állat osztályt vár)meghívom az Állat osztály egy állat nevű példányát, akkor a futás() fv-hez nem férek hozzá. És ha az állat példány helyett egy farkas példányt hívok meg, akkor annak a futás()-a meghívható...
Nem tudom, hogy mennyire voltam érthető...5.
Akkor ha egy osztály publikus vagy privát, és az adattagjainál nincs külön feltüntetve, hogy milyen láthatóságú, akkor automatikusa az osztály láthatóságát kapják meg, igaz?
arn: http://nagygusztav.hu/java-programozas -ez az előbb említett fórumtárs által javasolt könyv, egy sokkal rövidebb és magyarosított változata.(néha van egy olyan érzésem, hogy csak egy fordító progi lett ráeresztve az eredeti könyvre...) A Thinking in Java könyv, tényleg nem rossz, de én félbe hagytam anno. De nagyon részletes, és még Design Pattern példák is vannak benne!
1.
- Miért fér hozzá a tartalmozó osztály?
- Itt most egymasba agyazott Classokrol van szo..Class classon belul (ez nem oroklodes!). Vegyunk pl egy sima public classot. Te a classon kivul tudsz a classbol objectet csinalni, hozzafersz a public valtozoihoz/metodusaihoz, a privathoz viszont nem! A privatot csak a class/object maga tudja hasznalni es ha ugy akarja az isten akkor kozvetlenul te is (egy public metodus a classon belul ami hozzaferest ad a privat valtozohoz). Namost ha egy class tartalmaz egy masik privat classot, akkor ahhoz is csak o fer hozza kozvetlenul.
public class A{
private class B{}
}
Leegyszerusitve vehetjuk ugy, hogy a B class az Aclass sajatja, tehat hozzaferhet.2.
http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
Az elso valaszban van leirva peldaval, hogy hogyan ferhetsz hozza. Ha sima inner class-bol akarsz objektumot csinalni, akkor ha jol tudom eloszor kell egy object-et csinalnod a kulso classbol es csak utana tudsz a belsobol, mert a belso csak a kulson belul "el". Static-ot meg talan tudsz siman Kulso.Belso valtozo = new Kulso.Belso() ;3. passz
Amugy azt polymorfizmusnak hivjak, amikor egy alosztalyt az ososztalyanak tekinted. Viszont igy hirtele fogalmam sincs, mi tortenik, ha privat class orokol az allattol..privat classbol egyaltalan lehet objektumot csinalni? 
4. Tudtommal privat dolgokat NEM orokolnek az alosztalyok. Ha maga az ososztaly privat, akkor lehet ott dob hibat, amikor az alosztaly akar orokolni (tipp).
Protected egy olyan privat dolog, amit lehet orokolni, de kivulrol szinten nem fersz hozza.5. Amennyire tudom, egy classon belul alapbol minden privat.
-
Peter Kiss
őstag
Na visszatértem a Java valláshoz

Lenne egy következő kód:
Ez egy statikus tagosztály.
private static class Elem {
Object adat;
Elem elozo, kovetkezo;
Elem (Object adat, Elem elozo, Elem kovetkezo) {
this.adat = adat;
this.elozo = elozo;
this.kovetkezo = kovetkezo;
}Konstruktoros kérdésem lenne elsősorban: Elem nevű konstruktornak milyen a láthatósága? Privát, Public? (Statikus nem hinném, azt másra használjuk).
Illetve az idetartozó mezők/adattagoknak is mi a láthatósága?Én valamiért mégis a statikusra tippelnék. Ha egy osztály statikus akkor annak az összes adattagnak és tagfüggvényének is statikusnak kell lennie.
Ha valami nincs ellátva static kulcsszóval, akkor az instance-hoz kötődik, és még most szólok, Java-ban egyáltalán nincs static ctor. Ennek az osztálynak minden eleme "package" hozzáférésű, csak rájuk van húzva a private a class miatt, ami pontosan annyira redukálja a hozzáférhetőségét, amennyire mutatja magát (ami a class-t használhatja, az használ mindent, itt semmi se látja ezt az osztályt).
-
modder
aktív tag
Na visszatértem a Java valláshoz

Lenne egy következő kód:
Ez egy statikus tagosztály.
private static class Elem {
Object adat;
Elem elozo, kovetkezo;
Elem (Object adat, Elem elozo, Elem kovetkezo) {
this.adat = adat;
this.elozo = elozo;
this.kovetkezo = kovetkezo;
}Konstruktoros kérdésem lenne elsősorban: Elem nevű konstruktornak milyen a láthatósága? Privát, Public? (Statikus nem hinném, azt másra használjuk).
Illetve az idetartozó mezők/adattagoknak is mi a láthatósága?Én valamiért mégis a statikusra tippelnék. Ha egy osztály statikus akkor annak az összes adattagnak és tagfüggvényének is statikusnak kell lennie.
Heló,
nem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A "nested class-od" adattagjainak láthatósága alapértelmezetten package.
remélem tudod, hogy a static class csak belső osztályként jöhet létre (nested class), és nem azt jelenti, hogy ez egy singleton.
statikus nem a láthatóságra vonatkozik, hanem hogy az adott tag (metódus vagy mező) nem objektum példányhoz, hanem osztály példányhoz tartozik.
Kicsit több tudást igénylő példa, de ugyanazon nevű osztályból (package nevet is beleértve) szélsőséges esetben több példány is létezhet egy jvm-en belül (egy futtatás alatt), ha azok különböző classloaderekkel lettek betölve. (most nem objektum példányról beszélek, az egyértelmű, hogy egy osztálynak több példánya is lehet) -- A java classloaderek kicsit hasonlítanak a PHP-s auto-load classloaderekhez.
az osztálytagok (metódus vagy mező) alapértelmezett láthatósága a package. Így ebben az esetben is. Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból.
Tehát az Elem osztályod tagjaihoz csak a tartalmazó osztályból férhetsz hozzá, tulajdonképpen magához az osztályhoz is.
Lehet egy nested class nem statikus is
Ha a belső osztályod nem static, akkor egyértelműen hozzá van kötve az őt tartalmazó osztály egy példányához. Példányosítani kicsit furcsa szintaxissal kell:
KulsoOsztaly.BelsoOsztaly belsoPeldany =
kulsoOsztalyPeldany.new KulsoOsztaly.BelsoOsztaly();belső osztályból a tartalmazó külső osztálypéldányra hivatkozni pedig:
KulsoOsztaly tartalmazoOsztalyPeldany = KulsoOsztaly.this;http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html nézd meg a példakódot
-
Lacces
őstag
Na visszatértem a Java valláshoz

Lenne egy következő kód:
Ez egy statikus tagosztály.
private static class Elem {
Object adat;
Elem elozo, kovetkezo;
Elem (Object adat, Elem elozo, Elem kovetkezo) {
this.adat = adat;
this.elozo = elozo;
this.kovetkezo = kovetkezo;
}Konstruktoros kérdésem lenne elsősorban: Elem nevű konstruktornak milyen a láthatósága? Privát, Public? (Statikus nem hinném, azt másra használjuk).
Illetve az idetartozó mezők/adattagoknak is mi a láthatósága?Én valamiért mégis a statikusra tippelnék. Ha egy osztály statikus akkor annak az összes adattagnak és tagfüggvényének is statikusnak kell lennie.
Jó, mondjuk ez egy belső statikus osztály...
De nem is tudom... most elgondolkoztam. Mert statikus konstruktor nem lehet, ahhoz static{...}-ot használná, és statikus tagfüggvény csak statikus változókat kezelhet. Ott pedig a this kulcsszó szerepel, amely példányváltozóra mutat...
Hm, most belezavarodtam. -
pakriksz
őstag
Hát érdekes, de azt tudom, hogy a java két fajta "clipboardot - vágóasztalt" használhat. Az egyik a rendszer, system (azaz az oprendszerré) a másik pedig lehet egy beépített Java-s vágoasztal. De nem hinném, hogy ez lenne itt a gond.
Más böngészőből, más jelszóval is előfordul? Ezeket is meg kell vizsgálni.más jelszóval előfordult, más böngészőből is.
-
pakriksz
őstag
On the fly, hát... Java-nal nem tudok. MS téren a .NET-nél talán az IFilter interface.
talán nézz rá
Szerintem, inkább olvass be a sorokat és ha van valami, akkor cseréld, és mentsd el. Ehhez nagyon utána kellene járni. Unicode karakter-nél lehetnek gondok.megoldottam. Találtam a neten egy gyors byte sorozat kereső algoritmust. Az megkeresi a kezdőindexét, majd egy forral felülírom a byteokat, és mentés.
stringként olvasásnál pont a kódolás miatti problémák jöttek ki. mentés után a fájl 4x akkora volt, egy rakás jellel kiegészítve. Csak a szöveg maradt eredetiben. -
Frigo
őstag
Java-s webalkalmazások alapból az MVC struktúrát követik :
servlet-ek = controllerek
JSP-k = view-k
EJB-k vagy mezei Java osztályok = model-ekHa részletesebben érdekel akkor melegen ajánlom ezt a könyvet
Kezdő Java-s webfejlesztőknek tökéletes lesz. -
Taoharcos
aktív tag
Sziasztok!
Lehet lüke kérdés, de mi a főbb különbségek a JSP és a JSF között?
Én szeretnék létrehozni egy weboldalt Java nyelven (például legyen ez monjduk egy ingatlan kereső és egy közösségi oldal), akkor melyik technológiát érdemes használni? Én úgy vettem észre, hogy a JSF a jobb megoldás: támogatja az MVC-t és kevesebbet kell kódolni hozzá.
De lehet tévedek.
Ha van Java SE tudásom és gyakorlataom, akkor az elég ahhoz, hogy belekezdjek a JSF tanulásába, vagy kell még esetleg Java EE alapok is?
(webfejlesztés tapasztalat, más nyelvekből van)Vágj bele, és útközben úgyis megismersz sok mindent.
-
lakisoft
veterán
Sziasztok!
Lehet lüke kérdés, de mi a főbb különbségek a JSP és a JSF között?
Én szeretnék létrehozni egy weboldalt Java nyelven (például legyen ez monjduk egy ingatlan kereső és egy közösségi oldal), akkor melyik technológiát érdemes használni? Én úgy vettem észre, hogy a JSF a jobb megoldás: támogatja az MVC-t és kevesebbet kell kódolni hozzá.
De lehet tévedek.
Ha van Java SE tudásom és gyakorlataom, akkor az elég ahhoz, hogy belekezdjek a JSF tanulásába, vagy kell még esetleg Java EE alapok is?
(webfejlesztés tapasztalat, más nyelvekből van) -
WonderCSabo
félisten
-
WonderCSabo
félisten
Sziasztok!
Van egy interfész, itt létrehozok egy függvényt
public void addCommand(int param);
Aztán egy osztály ami ezt örökli.
public void addCommand(int param = 0)
Kérdésem, ezt így meg lehet adni?Azért mert van egyszer egy ilyen utasítás, amit a felhasználó megadhat, hogy csak simán paraméternélkül addCommand() - így nem fog galibát okozni, hogy az osztálynál addCommand(int param=0) függvény van csak deklarálva?
aztán egy másik osztálynál, olyan, hogy addCommand(50).És sajnos mindegyik osztálynál ezt az interfészt kell implementálni, de ha lehetséges én csak egyszerre egy függvényt szeretnék... és ezért találtam ki ezt az int param = 0 paraméterű függvényt.
Esetleg még ilyen megoldásra gondoltam:
public void addCommand(int param) {
// ez az fv. ami kötelező deklralálni az interfész miatt
}
/**
* A függvény meghívja az addCommand függvényt *
*/
public void addDown(int param = 0){
this.addCommand(param);
}
És akkor ezt így meglehet hívni a konzolban, hogy x.addDown() ? - nem fog futásidőben galibát okozni? (most nincs fejlesztő környzet a környéken... és így elméletben programozok)Javában nem adhatsz meg default értéket a fv. paramétereknek. De csinálhatsz két addCommand fvt, akár mindkettőt deklarálhatod az interfaceben is. Az egyik paraméteres, a másik nem. A második meg meghívja az elsőt 0 paraméterrel.
-
WonderCSabo
félisten
Aham, köszi, ezt a getClass-t szoknom kell, ez egy picit furcsa.
Azt mondod, hogy a this osztályt kérdezi le.Ez a this tesz be nekem
. Én úgyérzem, hogy ez a this egyenlő a getResourceAsStream() -ben lévő fájlban tárolt osztállyal. Erre gondoltál. A this az sajátot jelent, önmagát... de nekem mégis a getResourceAsStream() paraméteres dolog ugrik be...Ezt a kételyt kéne eloszlatni

Előbb véletlenül osztályt írtam. Tehát a getClass() az objektum sémáját, mintáját, az osztály leírását adja vissza. Nem a this - ét, azt amelyik objektumra meg lett hívva. Pl. ezt is lehetne:
String s = "dfdf";
s.getClass();Csak az előbbi példakódban pont a this - re lett meghívva.
-
WonderCSabo
félisten
Név és kiterjesztés is kell, minden fájl esetén, minden programozási nyelvben.
A getClass() - al pedig egy osztály sémáját tudja lekérdezni (jelen esetben a this - ét), és ennek metódusaival, mezőivel, stb. tud machinálni. Itt a JAR-ban lévő resource kinyerése miatt kellett a getResourceAsStream() meghívásához.Egyébként külső fájl esetén ilyen egyszerű létrehozni egy Scanner objektumot:
Scanner sc = new Scanner(new File("a txt neve"));
-
Fooler89
őstag
String fajlnev="a txt neve";
InputStream is = getClass().getResourceAsStream("fajlnev");
Scanner szavak = new Scanner(is);InputStream megkeresi a fajlnevet és átadom a Scanner-nek a fájl útvonalát.
A fájlt meg beraktam az src-be és a netbeans be is csomagolja.Lortech-nek köszönöm a segítséget.

A kérdéseimmel próbálok a tömörségre törekedni, a másik, hogy hátha valaki javasol egy jobb megoldást.
Tanácsaidat megfogadom. -
Fooler89
őstag
-
Fooler89
őstag
-
Chipi333
csendes tag
Hi!
A projectben kell lennine egy olyan mapának, hogy Source Packages. Ebben vannak a packagek, illetve ha még nincs semmid akkor is egy default packagenek. -
fatal`
titán
Aham, és ez az "egyszer fut le osztályonként." Ez hogyan is történik a háttérben? És köszi a válaszokat.
Bár lehet máshogy kérdezem, mikor fut le egy osztály?
(Ha ez az objektum példányosításakor, akkor mindig valahányszor meg hívok egy mondjuk Állat osztálybeli objektum, akkor valahányszor létrehozok egy Állat objektumot, akkor lefut ez a statikus is, igaz?)Nem példányosításkor, hiszen az osztály statikus elemeit akkor is eléred, ha az osztály nincs példányosítva. Elméletileg rögtön akkor lefut, amikor elindítod a programot és a JVM betölti az osztályokat.
-
MrSealRD
veterán
Aham, és ez az "egyszer fut le osztályonként." Ez hogyan is történik a háttérben? És köszi a válaszokat.
Bár lehet máshogy kérdezem, mikor fut le egy osztály?
(Ha ez az objektum példányosításakor, akkor mindig valahányszor meg hívok egy mondjuk Állat osztálybeli objektum, akkor valahányszor létrehozok egy Állat objektumot, akkor lefut ez a statikus is, igaz?)Ez akkor amikor a JVM-be a classloader betölti...
Tehát elvileg 1-szer...az elején.Azt nem tudom, hogy ha közben van GC akkor ezeket is gyomlálja e...
-
MrSealRD
veterán
A statikus inicializáló rész a konstruktor előtt fut le mindig.
Ha több ilyen van akkor olyan sorrendben ahogy a kódban szerepel. -
modder
aktív tag
-
Fooler89
őstag
A másik kérdés, hogy 48 ezer szót feltölteni így nem egy perces feladat a gépnek?
Hát nem tudom, hogy mennyire komoly ez az alkalmazás, de én akkor már adatbázis használatban gondolkodnék...
Akkor szerintem egyszerűbb minden, mert ha létrehozol egy szotar táblát ( oszlopok: id, angol, magyar) akkor könnyebb dolgod van.
Ugyanis akkor tudsz id (sorszám) alapján lekérdezni. (csak az adatbázist kell jól beállítani)Akkor már ezt a Hashmap, List-et is ki lehet kerülni, mert csak adatbázis műveletre támaszkodsz nagy részben.
Lelkes amatőrként állok a dolog előtt, minden vele töltött perc hasznos számomra így ha érdemes akkor foglalkoznék vele.
Mod: Akkor ezzel próbálom megoldani és majd idővel továbbfejlesztem.
Köszönöm a segítséget, közben pár dolog megvilágosult számomra.

-
WonderCSabo
félisten
Én csak azt vettem észre, hogy ami publikus vagy protected, vagy ami privát pont ezekhez kapcsolódik (mint egy privát mezőnek a lekérdezése publikus getterrel, de ez alap) Ezek használhatóak fel gond nélkül a gyermekben. (vagy publikus függvény ami felhasznál egy privát függvényt is)
Mert végül is ha örököl, akkor a gyermek osztály mindent másol a szülőtől?
Rövid, tömör leírást tudsz erről adni? ( mert úgy látszik ez tényleg nem tiszta, Java docsot kivéve)A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?
Már tényleg belevagyok kavarodva egy kicsit
kell a fejmosás.Az öröklődés azt jelenti, hogy a gyerek mindent örököl az ősétől. Csak egyes dolgokat nem tud közvetlenül elérni.
A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?
Az elfedés pont azt jelenti, hogy az ami az ősben volt, azt nem látszik a gyerekben, mert azokat új metódusok elrejtik. Az elrejtő metódusokat tudod meghívni a gyerekben.
-
Chipi333
csendes tag
Én csak azt vettem észre, hogy ami publikus vagy protected, vagy ami privát pont ezekhez kapcsolódik (mint egy privát mezőnek a lekérdezése publikus getterrel, de ez alap) Ezek használhatóak fel gond nélkül a gyermekben. (vagy publikus függvény ami felhasznál egy privát függvényt is)
Mert végül is ha örököl, akkor a gyermek osztály mindent másol a szülőtől?
Rövid, tömör leírást tudsz erről adni? ( mert úgy látszik ez tényleg nem tiszta, Java docsot kivéve)A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?
Már tényleg belevagyok kavarodva egy kicsit
kell a fejmosás."Mert végül is ha örököl, akkor a gyermek osztály mindent másol a szülőtől?"
Igen, alapvetően mindent másol, de a private dolgokhoz közvetlenül nem fér hozzá, csak az ősben definiált protected/public metódusokon keresztül."A gyermek megtudja hívni az elfedett statikus adatmezőket és metódusokat?"
A statikus adattagok és metódusok a statikus típushoz kötődnek. Ezért van az hogy nem szokás példányon keresztül elérni őket, mert megtévesztő lehet, ugyanis a referencia statikus típusa határozza meg, hogy melyik lesz meghívva.
Pl.:
Szülő.StaticMethod(); //értelemszerúen a Szülő metódusát hívja
Gyerek.StaticMethod(); //értelemszerúen a Gyerek metódusát hívja
Szülő sz = new Gyerek();
sz.StaticMethod(); //a statikus típus(a referencia típusa), azaz a Szülő
//StaticMethodját fogja hívni és kapsz mellé egy compiler warningot is
//hogy statikus függvényt nem illik referencián keresztül hívniSzóval a gyerekből is eléred, de a szülő típuson keresztül kell rá hivatkozni.
Tömören kb. ennyiben lehet összefoglalni. De szerintem keress a témáról valami egyetemi jegyzetet és olvasd át, aztán ha valahol nem világos akkor kérdezz.
-
Chipi333
csendes tag
"Statikust is örökli? Azt gondolom nem, mert az csak az adott osztályra vonatkozik. (mint a statikus konstruktor, nem hozz létre példányt)"
Minden öröklődik. Itt kicsit összekavarodtál. A statikus valóban azt jelenti hogy az osztályhoz kötődik, és nem jön létre külön minden példányban, de ettől még a leszármazott osztálynak is meglesznek ugyanazok a statikus tagjai. A különbésg az, hogy máshogy működik a felüldefiniálás. Statikus dolgok esetén elfedésnek hívák, és teljesen máshogy viselkedik (angolul override helyett ezt hide-nak hívják).
-
birno
addikt
Nem olyan egyszeru am a dolog mint amilyennek tunik, de ja, ezt legalabb megjegyzem, a privat az tiszta is volt, csak a statikus nem.

Amugy ja, kicsit bonyolult lett, de egy nyamvadt statikus tag sincs meg benne, aminek ertelme is lenne.
Chipi333: En nem ertek hozza, de nekem az lenne a logikus, hogy mivel gyerek osztalybol kozvetlenul nem erem el a privat tagokat, csak super-el, akkor nem oroklodott, csak inicializalodott a gyerek osztaly letrejottekor, ami meg nem ugyanaz.
WonderCSabo: Tehat a metodusokat orokli, a privat tagokat nem, a metodusok is gondolom valami "rejtett" super hivassal erik el.
-
WonderCSabo
félisten
Ha vannak public / protected metódusok, amik hozzáférnek a private mezőkhöz / fvkehez, akkor azokat öröklöd, és továbbra is hozzáférnek a private cuccokhoz.
-
Chipi333
csendes tag
"Ez egy aranyszabály: Privát és Statikus (függvény, adattag, osztály) nem örökölhető!"
No hát azért ez így nem igaz. Öröklődik az csak a leszármazott közvetlenül nem fér hozzá
-
birno
addikt
Nálunk azért több volt, de az szívatosabb
mert függvény be és kimenete is és hogy mit csináljon, és a legtöbbször csak aktív fórumozás és 1 napi gondolkodás segített (google nem)Esetleg egy Járműves valamit.
Gépjármű mint interfész, itt definiálod a, hogy az osztályok mely metódusakat valósítsák meg.
(például max sebessége)Autó, mint egy ősosztály
TeherAutór, mint egy gyermek (így már tudod a super()-t meghívni és a toString esetén a super.ToString()A többit meg rád bízom
SZTE.
Az szerintem amugy sokkal jobb ha megvan hatarozva, hogy mit kell csinaljon, mit kezeljen le, stb, a tavalyi beadando olyan volt hogy, 2 feladat specifikalva, 1-1 napot elszorakoztam vele hasonlokepp amint irod, de ott legalabb fixen tudtam hogy mit csinaljak.Ilyen egyszeru dolgok nekem is eszembe jutottak, en amugy egy kvizes cuccra gondoltam, egy kviz interface, abbol kulonbozo tipusu kvizek, megoldasok private-ba, kvizek egy tombbe, peldanyositas nelkul statikus metodusokkal elkerni a nevuket, adataikat ckilusba amihez iteratort hasznalok stb, ott akadtam meg, hogy a protected tagot hogy vigyem bele ertelmesen, ugy hogy latszodjon, hogy ertem, akkor ket package kellene, na de akkor a masodikba kellene az elsobol hasznalni valamit amivel szemleltetem, hogy a protectedet nem erhetem el, na de mit, ugy hogy ne legyen tul bonyolult atnezni a gyakveznek, mert ugye ezt is leirtak.

Na mindegy, hatha jon meg valaki valami jo otlettel, ha nem, akkor holnap nekiallok s valahogy osszekalapalom a szuper all-in-one progit.

-
modder
aktív tag
Köszi, még van idő a megvalósításig, addig gondolkodom rajta, csak amikor már neki esek a JSP/JSF tanulásának akkor már egyből tolni is akarom a projektet.
De ezt a DAL és BLL-t még kódszinten is látni akarom, előtte. Most így belekavarodtam.DAL: például: objektum beszúrás, módosítása, törlése az adatbázisban
BLL például: Diagram objektum, Felhasználó objektumokIgazából ahogy a munka és egyetem során is ismerkedem a dolgokkal én MongoDB-re gondoltam (nosql) neked erről mi a véleményed?
Én addig szívesen tervezek
.http://bytes.com/topic/asp-net/answers/764307-bll-dal-how-they-different
Ezt magamnak is bukmárkoltam

-
MrSealRD
veterán
Köszi, még van idő a megvalósításig, addig gondolkodom rajta, csak amikor már neki esek a JSP/JSF tanulásának akkor már egyből tolni is akarom a projektet.
De ezt a DAL és BLL-t még kódszinten is látni akarom, előtte. Most így belekavarodtam.DAL: például: objektum beszúrás, módosítása, törlése az adatbázisban
BLL például: Diagram objektum, Felhasználó objektumokIgazából ahogy a munka és egyetem során is ismerkedem a dolgokkal én MongoDB-re gondoltam (nosql) neked erről mi a véleményed?
Én addig szívesen tervezek
.Én nemrég azt hallottam, hogy bár még az elején jár a NoSQL már most nagyon gyors...egy adott teszten 50%-ot vert a MySQL-re...
Állítólag ez a jövő... -
Davs
tag
-
modder
aktív tag
Igen-igen, az MVC arhcitecktúra, ezt így összemostam,
De köszönöm a DAL és a BLL réteg leírását! Esetleg erre van példa linked?Igen, és tervezési mintákra(design patternek) te melyiket javasolod? Példákkal.
2 dolog lenne,
Az egyik, nem más lenne, hogy folyamatosan kérdések lennének kiírva, Csak annyit, hogy 2-3 témára koncentrálodnának a kérdések (bár lehet ehhez felesleges)A másik, hogy diagramokkat jelenítenék meg. Lenne id, címe, stb. És egy dinamikusan adattag is lenne, az pedig az oszlopok (ez egy List lenne például, vagy egy 2 dimmenziós tömb), az egyik ilyen diagram objektumnak az oszloplistája, 4 oszlopot tartalmazna (értéket), a másik meg például 8-at.
De ezek folyamatosan is változnának, vagyis az oszlopokhoz tartozó érték (adatbázisból jönnének az értékek)
És egy ilyen 2 dimmenziós tömböt érdemes-e mással kiváltani? Például egy List, Treemap?
Mapekre gondoltam, mert lenne kulcs, és hozzátartozó érték. Csak ahogy írtam a mappek mérete mindig más-más lenne, mert diagram objektumonként változik (a válaszadási lehetőségek kiértékelése)Esetleg felhasználók kezeléséhez? Én mondjuk itt az abstract factoryra gondoltam, lenne az egyszerű user, moderátor és admin.
Elméletben tanultam a tervezési mintákról, csak szeretném gyakorlatban is alkalmazni.

Ezek alapján az információk alapján nehéz eldönteni, hogyneked milyen tervezési mintákra van szükséged, az meg a másik, hogy olyan sok tapasztalatom nekem sincsen, hogy séróból vágjak 10-20 mintát

Ahogy látom, szeretnéd jól átgondoltan elkezdeni a projektedet, ami mindenképpen jó. Ehhez tudok adni pár tanácsot, ezek elcsépeltnek tűnhetnek, de érdemes betartani őket, hogy ne idő közben jöjj rá, hogy valami szar vagy nem elég rugalmas
Specifikáció: Mindenképpen próbáld meg jól specifikálni azt, amit szeretnél az oldalon: Milyen adatokat akarsz megjeleníteni, hogy akarod megjeleníteni, a felhasználók milyen interakciókra képesek az oldalon (use-case-ek), hogyan akarod őket elszeparálni egymástól. Milyen oldalak lesznek egyáltalán. Ez az alapja az egésznek, ha ebben nem vagy biztos, akkor gondolkodj még rajta.
Modell/Adatbázis: A speci függvényében találd ki a modelledet. Vagy adatbázisból indulj, vagy osztályokból. Én adatbázis modellből indulnék, mert tudom, hogy úgy biztosan hatékony és normalizált lesz az adatbázis (már hanem valami elosztott/no-sql megoldást teszel mögé). Ez még csak az adatok és az adatok közötti interakció, ebben nincsen benne a felhasználói input meg böngészés.
Modell 2 /BLL: Az adatbázis alapján megtervezed a modelledet, osztályokat, amik képesek mindenfélét elvégezni az adatbázisban, amire szüksége lehet a szoftverednek: új diagram, diagram lekérdezése, kérdések, tárátáttá... Itt már érezni fogod, hogy mik azok a pontok, amiket lehet, hogy egyszerűbben is meg lehetne valósítani valami design patternnel, és akkor felmész wikipédiára, és véginézed az összeset

Na, ha ezekkel megvagy, és úgy látod, kiválóan meg tudsz valósítani mindent modell szinten, amit szeretnél, akkor már "gyerekjáték" lesz megcsinálni a controllert és a view-kat, amik az adatokat megjelenítik. Ne felejtsd el, hogy a Java erősen objektumorientált nyelv, ezért nagyon is van értelme osztályokban gondolkodni.
Egy szó, mint száz: Tervezés, tervezés, tervezés!
Persze lehet, hogy fognak jönni azok, akik mondják, hogy manapság az agilis módszertanokat használják a gyors szoftverfejlesztés miatt, és nem kell ennyi időt szánni a tervezésre... erre csak azt tudom mondani, hogy: DE!

-
modder
aktív tag
az MVC az architektúra, nem tervezési minta. tervezési minta nagyon sokféle van, és sokfélét lehet használni MVC-n belül is, hogy egyszerűsítsd, hordozhatóbbá tedd a kódodat.
Én nem tudok hirtelen mást architektúrát MVC-n kívül, szerintem ez a legelterjedtebb.
De hogy valami érdemi információt is mondjak, én még ketté tudnám osztani az MVC model rétegét:Model:
DAL - Data Access Layer
BLL - Business Logic Layer
Controller
ViewA DAL fogja tartalmazni az alap objektumaidat a modelledben, általában ezt valósítják meg a külfönféle ORM-ek. (ügyfél, autó, számla, kutyafüle...) Más értelmezésben, ahogy a neve is mutatja: ez a réteg kommunikál közvetlenül az adatbázissal: create, update, read, delete
A BLL pedig komplexebb feladatok megoldása a DAL-béli objektumokon, amiknek nincsen köze még a view-hoz vagy a program flow-hoz, amit a controller biztosít.
Például: Ha egy banki szoftvert csinálsz, és regisztrálsz egy új felhasználót, akkor BLL-ben cisnálod meg a regisztrál függvényt, ami a DAL rétegben létrehoz egy felhasználót és egy kezdő számlát is. -
ArchElf
addikt
-
Davs
tag
Ez egy picit nincs túl bonyolítva?

Már tervbe van véve, hogy 1 hónap múlva fogok a generikusokról részletesebben tanulni, de ez szerintem túl bonyolult így.
Esetleg azt csinálnám, hogy az <ArrayList<int>> típusból egy osztályt csinálnék ami dolgozik ezekkel az ArrayListekkel, és akkor lehetne rá Get és Set metódusokat írni. Ha nagyon ezt akarod követni.
És akkor így talán egyszerűbb, átlátod, és az ArrayList<int>-eket objektumként kezeled. És tudnál metódust írni amellyel eléred az ArrayList elemeit is
Én így ennyit tudtam mondani, mint lelkes java tanuló
. De majd jönnek az okosabbak 
De, tutira tul van bonyolitva..igazabol osszesitve kell egy 81 nagysagu tarolo (9*9), aminek minden eleme lehet 0, vagy egy tomb es ennek a tombnek a merete lehet 1-tol 9ig es lehessen barhonnan torolni belole
Mondjuk most, hogy igy megfogalmazta, lehet eleg lenne egy tarolo, ami vector<int>-eket tarolna siman. C++-ban egyszeruen lehetett .push_back()-al hozzaadni, es .erase()-szel tetszoleges elemet torolni belole..talan itt is mukodik ez
utananezek...most mar csak akkor az a kerdes, hogy azt a 81db vector<int>-et miben taroljam 
Amugy ha lattok valami esszerubb leirast a sudoku problema megkozeliteserol, akkor nyitott vagyok mindenre

-
Taoharcos
aktív tag
-
modder
aktív tag
Én állást keresek Java-ban eddig nem sok visszajelzés. Így mélyítem a tudásomat.
Amit én állásportálokon észrevettem:
Java: Webprogramozás (JSP, JSF)
Pénzügyi/Bank szoftverek
Üzleti szoftverekC++ meg mindent lefed mint programozási nyelv. De én úgy mondom, hogy a Java-ra nem mint programozási nyelvre gondolj. Hanem mint programozási "környezet", platform-ra.
Úgy mint Microsoft oldalon, van a programnyelv: C# vagy VB. és aztán ott van mögötte álló hatalmas nagy .NET keretrendszer, és akkor már hoppá, grafika, web, adatbázisos dolgok. (és ez a Java-ra is igaz), bár úgy vettem észre, hogy a műszaki ipar a .NET-et kedveli inkább a Java-val szemben... de ez nem biztos (amúgy meg ott a C és C++ az egyeduralkodó).
Igen, ha Java, akkor inkább Java EE-re kell gondolni, ami mindenféle apit és szolgáltatást nyújt middleware rendszerek létrehozására, illetve webprogramozásra.
Szóval Javaval kapcsolatban elsősorban nem felhasználói programokra kell gondolni, hanem háttér rendszerekre.
Bár egyébként nem tudom, hogy miért nem használják gyakrabban felhasználói programokhoz. Én mostanában Eclipse RCP-ben fejlesztgettem SWT-vel, és nagyon használható, natív hatású felületeket lehet lérehozni vele, de tény, hogy az MS WPF-től elmarad sokban. Amúgy pl. a Vuze torrent kliens teljes egészében Javaban íródott, és SWT-t használ.
-
MrSealRD
veterán
-
Fooler89
őstag
Nem, nem tutorial alapján, csupán csak szeretnék készíteni egy egyszerű játékot és ehhez kellene ez a tábla.
-
Gh0sT
addikt
Szia!
"Mivel fejlesztőknek készült változatról beszélünk, ezért vannak mellé java kiterjesztésű fájljaim is. Ez az én meglátásom szerint a forráskód lehet." - igen, azok a java fájlok a forráskódok

Egyrészt még nekem is van mit tanulni Java-ból
. Másrészt most egy darabig nem igazán érek rá senkinek sem segíteni (saját weboldalam tervezésére sincs időm)De ha senki sem tud segíteni, akkor jövőhétvégén dobhatsz egy privit és ránézek.
Köszönöm!
Viszonylag gyors segítségre lenne szükségem, úgyhogy várom még a többiek hozzászólásait is. Ha esetleg nem oldódna meg jövő hét végéig, mindenképpen keresni foglak.
-
modder
aktív tag
-
Scroll Lock
tag
Egyetértek, bár nekem ez már túlságosan a mélyvíz volt.

Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Kerékpárosok, bringások ide!
- Lightyear - befektetési app
- Futás, futópályák
- Yettel topik
- Anglia - élmények, tapasztalatok
- Építő/felújító topik
- World of Tanks - MMO
- gban: Ingyen kellene, de tegnapra
- Az Intel szerint mindenkit érint, illetve érinteni fog a CPU-hiány
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
- Apple iPhone 12 64GB, Kártyafüggetlen, 1 Év Garanciával
- Honor X8a 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 12 64GB, Kártyafüggetlen, 1 Év Garanciával
- Dell Precision 7760 i7-11850H 64 GB RAM NVIDIA RTX A4000 FHD IPS Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




Már az ideg kerülget, hogy hogyan kéne helyesen beolvasni vagy hol melyiket hogyan adjam át.

) és ha Spring-et kértek volna akkor azt külön jelezték, vagy még a Strut2-t láttam népszerűnek.
. Mindegy, lényeg hogy értjük egymást. 

![;]](http://cdn.rios.hu/dl/s/v1.gif)


