2013. január 4., péntek

New classes and methods in Java 8

Here is a small list of new classes and methods in Java 8 b70:


--------------------------------
java/io/DefaultFileSystem
class DefaultFileSystem

--------------------------------
java/lang/AbstractStringBuilder
AbstractStringBuilder append(AbstractStringBuilder asb)

--------------------------------
java/lang/Boolean
public static int hashCode(boolean value)

--------------------------------
java/lang/Byte
public static int hashCode(byte value)
public static int toUnsignedInt(byte x)
public static long toUnsignedLong(byte x)
public static final int BYTES = SIZE / Byte.SIZE

--------------------------------
java/lang/Character
public static final UnicodeBlock ARABIC_EXTENDED_A = new UnicodeBlock("ARABIC_EXTENDED_A", "ARABIC EXTENDED-A", "ARABICEXTENDED-A")
public static final UnicodeBlock SUNDANESE_SUPPLEMENT = new UnicodeBlock("SUNDANESE_SUPPLEMENT", "SUNDANESE SUPPLEMENT", "SUNDANESESUPPLEMENT")
public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS = new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS", "MEETEI MAYEK EXTENSIONS", "MEETEIMAYEKEXTENSIONS")
public static final UnicodeBlock MEROITIC_HIEROGLYPHS = new UnicodeBlock("MEROITIC_HIEROGLYPHS", "MEROITIC HIEROGLYPHS", "MEROITICHIEROGLYPHS")
public static final UnicodeBlock MEROITIC_CURSIVE = new UnicodeBlock("MEROITIC_CURSIVE", "MEROITIC CURSIVE", "MEROITICCURSIVE")
public static final UnicodeBlock SORA_SOMPENG = new UnicodeBlock("SORA_SOMPENG", "SORA SOMPENG", "SORASOMPENG")
public static final UnicodeBlock CHAKMA = new UnicodeBlock("CHAKMA")
public static final UnicodeBlock SHARADA = new UnicodeBlock("SHARADA")
public static final UnicodeBlock TAKRI = new UnicodeBlock("TAKRI")
public static final UnicodeBlock MIAO = new UnicodeBlock("MIAO")
public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", "ARABIC MATHEMATICAL ALPHABETIC SYMBOLS", "ARABICMATHEMATICALALPHABETICSYMBOLS")
public static int hashCode(char value)
public static final int BYTES = SIZE / Byte.SIZE

--------------------------------
java/lang/Class
public <A extends Annotation> A[] getAnnotations(Class<A> annotationClass)
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
public <A extends Annotation> A[] getDeclaredAnnotations(Class<A> annotationClass)

--------------------------------
java/lang/Double
public static final int BYTES = SIZE / Byte.SIZE
public static boolean isFinite(double d)
public static int hashCode(double value)

--------------------------------
java/lang/Float
public static final int BYTES = SIZE / Byte.SIZE
public static boolean isFinite(float f)
public static int hashCode(float value)

--------------------------------
java/lang/Integer
public static String toUnsignedString(int i, int radix)
public static String toUnsignedString(int i)
public static int parseUnsignedInt(String s, int radix) throws NumberFormatException
public static int parseUnsignedInt(String s) throws NumberFormatException
public static int hashCode(int value)
public static int compareUnsigned(int x, int y)
public static long toUnsignedLong(int x)
public static int divideUnsigned(int dividend, int divisor)
public static int remainderUnsigned(int dividend, int divisor)
public static final int BYTES = SIZE / Byte.SIZE

--------------------------------
java/lang/InternalError
public InternalError(String message, Throwable cause)
public InternalError(Throwable cause)

--------------------------------
java/lang/Long
public static String toUnsignedString(long i, int radix)
public static String toUnsignedString(long i)
public static long parseUnsignedLong(String s, int radix) throws NumberFormatException
public static long parseUnsignedLong(String s) throws NumberFormatException
public static int hashCode(long value)
public static int compareUnsigned(long x, long y)
public static long divideUnsigned(long dividend, long divisor)
public static long remainderUnsigned(long dividend, long divisor)
public static final int BYTES = SIZE / Byte.SIZE

--------------------------------
java/lang/Math
public static int addExact(int x, int y)
public static long addExact(long x, long y)
public static int subtractExact(int x, int y)
public static long subtractExact(long x, long y)
public static int multiplyExact(int x, int y)
public static long multiplyExact(long x, long y)
public static int toIntExact(long value)
public static int floorDiv(int x, int y)
public static long floorDiv(long x, long y)
public static int floorMod(int x, int y)
public static long floorMod(long x, long y)
public static double nextDown(double d)
public static float nextDown(float f)

--------------------------------
java/lang/Package
public <A extends Annotation> A[] getAnnotations(Class<A> annotationClass)
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
public <A extends Annotation> A[] getDeclaredAnnotations(Class<A> annotationClass)

--------------------------------
java/lang/Process
public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
public Process destroyForcibly()
public boolean isAlive()

--------------------------------
java/lang/Short
public static int hashCode(short value)
public static final int BYTES = SIZE / Byte.SIZE
public static int toUnsignedInt(short x)
public static long toUnsignedLong(short x)

--------------------------------
java/lang/StrictMath
public static int addExact(int x, int y)
public static long addExact(long x, long y)
public static int subtractExact(int x, int y)
public static long subtractExact(long x, long y)
public static int multiplyExact(int x, int y)
public static long multiplyExact(long x, long y)
public static int toIntExact(long value)
public static int floorDiv(int x, int y)
public static long floorDiv(long x, long y)
public static int floorMod(int x, int y)
public static long floorMod(long x, long y)
public static double nextDown(double d)
public static float nextDown(float f)

--------------------------------
java/lang/StringBuffer
@Override synchronized StringBuffer append(AbstractStringBuilder asb)

--------------------------------
java/lang/ThreadLocal
public static <T> ThreadLocal<T> withInitial(Supplier<? extends T> supplier)

--------------------------------
java/lang/VirtualMachineError
public VirtualMachineError(String message, Throwable cause)
public VirtualMachineError(Throwable cause)

--------------------------------
java/lang/annotation/ContainedBy
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface ContainedBy

--------------------------------
java/lang/annotation/ContainerFor
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface ContainerFor

--------------------------------
java/lang/annotation/ElementType

--------------------------------
java/lang/annotation/InvalidContainerAnnotationError
public class InvalidContainerAnnotationError extends AnnotationFormatError

--------------------------------
java/lang/annotation/Native
@Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.SOURCE) public @interface Native

--------------------------------
java/lang/management/LockInfo
public static LockInfo from(CompositeData cd)

--------------------------------
java/lang/reflect/AccessibleObject
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
public <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
public <T extends Annotation> T[] getDeclaredAnnotations(Class<T> annotationClass)

--------------------------------
java/lang/reflect/AnnotatedElement
<T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
<T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
<T extends Annotation> T[] getDeclaredAnnotations(Class<T> annotationClass)

--------------------------------
java/lang/reflect/Executable
public abstract class Executable extends AccessibleObject implements Member, GenericDeclaration
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)

--------------------------------
java/lang/reflect/Field
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)

--------------------------------
java/math/BigInteger
public long longValueExact()
public int intValueExact()
public short shortValueExact()
public byte byteValueExact()

--------------------------------
java/security/cert/CertPathBuilder
public final CertPathChecker getRevocationChecker()

--------------------------------
java/security/cert/CertPathBuilderSpi
public CertPathChecker engineGetRevocationChecker()

--------------------------------
java/security/cert/CertPathChecker
public interface CertPathChecker

--------------------------------
java/security/cert/CertPathValidator
public final CertPathChecker getRevocationChecker()

--------------------------------
java/security/cert/CertPathValidatorSpi
public CertPathChecker engineGetRevocationChecker()

--------------------------------
java/security/cert/Certificate
public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException

--------------------------------
java/security/cert/PKIXRevocationChecker
public abstract class PKIXRevocationChecker extends PKIXCertPathChecker

--------------------------------
java/security/cert/X509CRL
public void verify(PublicKey key, Provider sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, SignatureException

--------------------------------
java/security/cert/X509Certificate
public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException

--------------------------------
java/util/Base64
public class Base64
public static class Encoder
public static class Decoder

--------------------------------
java/util/Calendar
public static final int NARROW_FORMAT = 4
public static final int NARROW_STANDALONE = NARROW_FORMAT | STANDALONE_MASK
public static final int SHORT_FORMAT = 1
public static final int LONG_FORMAT = 2
public static final int SHORT_STANDALONE = SHORT | STANDALONE_MASK
public static final int LONG_STANDALONE = LONG | STANDALONE_MASK
public String getCalendarType()

--------------------------------
java/util/Collections
public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)
@SuppressWarnings("unchecked") public static final <E> SortedSet<E> emptySortedSet()

--------------------------------
java/util/GregorianCalendar
@Override public String getCalendarType()

--------------------------------
java/util/Locale
public boolean hasExtensions()
public Locale stripExtensions()
public static enum FilteringMode
public static final class LanguageRange
public static List<Locale> filter(List<LanguageRange> priorityList, Collection<Locale> locales, FilteringMode mode)
public static List<Locale> filter(List<LanguageRange> priorityList, Collection<Locale> locales)
public static List<String> filterTags(List<LanguageRange> priorityList, Collection<String> tags, FilteringMode mode)
public static List<String> filterTags(List<LanguageRange> priorityList, Collection<String> tags)
public static Locale lookup(List<LanguageRange> priorityList, Collection<Locale> locales)
public static String lookupTag(List<LanguageRange> priorityList, Collection<String> tags)

--------------------------------
java/util/function/BinaryOperator
public interface BinaryOperator<T>

--------------------------------
java/util/function/Block
public interface Block<T>

--------------------------------
java/util/function/DoubleBinaryOperator
public interface DoubleBinaryOperator /* extends BinaryOperator<Double> */

--------------------------------
java/util/function/DoubleBlock
public interface DoubleBlock

--------------------------------
java/util/function/DoubleFunction
public interface DoubleFunction<T>

--------------------------------
java/util/function/DoubleSupplier
public interface DoubleSupplier

--------------------------------
java/util/function/DoubleUnaryOperator
public interface DoubleUnaryOperator

--------------------------------
java/util/function/Function
public interface Function<T, R>

--------------------------------
java/util/function/IntBinaryOperator
public interface IntBinaryOperator

--------------------------------
java/util/function/IntBlock
public interface IntBlock

--------------------------------
java/util/function/IntFunction
public interface IntFunction<T>

--------------------------------
java/util/function/IntSupplier
public interface IntSupplier

--------------------------------
java/util/function/IntUnaryOperator
public interface IntUnaryOperator

--------------------------------
java/util/function/LongBinaryOperator
public interface LongBinaryOperator

--------------------------------
java/util/function/LongBlock
public interface LongBlock

--------------------------------
java/util/function/LongFunction
public interface LongFunction<T>

--------------------------------
java/util/function/LongSupplier
public interface LongSupplier

--------------------------------
java/util/function/LongUnaryOperator
public interface LongUnaryOperator

--------------------------------
java/util/function/Predicate
public interface Predicate<T>

--------------------------------
java/util/function/Supplier
public interface Supplier<T>

--------------------------------
java/util/function/UnaryOperator
public interface UnaryOperator<T>

--------------------------------
java/util/spi/CalendarDataProvider
public abstract class CalendarDataProvider extends LocaleServiceProvider

--------------------------------
java/util/spi/CalendarNameProvider
public abstract class CalendarNameProvider extends LocaleServiceProvider

--------------------------------
java/util/spi/LocaleServiceProvider
public boolean isSupportedLocale(Locale locale)

--------------------------------
java/util/spi/ResourceBundleControlProvider
public interface ResourceBundleControlProvider

--------------------------------
java/util/spi/TimeZoneNameProvider
public String getGenericDisplayName(String ID, int style, Locale locale)

--------------------------------
java/util/zip/Adler32
public void update(ByteBuffer buffer)

--------------------------------
java/util/zip/CRC32
public void update(ByteBuffer buffer)

--------------------------------
javax/lang/model/SourceVersion
RELEASE_8

--------------------------------
javax/lang/model/type/IntersectionType
public interface IntersectionType extends TypeMirror

--------------------------------
javax/lang/model/type/TypeKind
INTERSECTION

--------------------------------
javax/lang/model/type/TypeVisitor
R visitIntersection(IntersectionType t, P p)

--------------------------------
javax/lang/model/util/AbstractAnnotationValueVisitor8
@SupportedSourceVersion(RELEASE_8) public abstract class AbstractAnnotationValueVisitor8<R, P> extends AbstractAnnotationValueVisitor7<R, P>

--------------------------------
javax/lang/model/util/AbstractElementVisitor8
@SupportedSourceVersion(RELEASE_8) public abstract class AbstractElementVisitor8<R, P> extends AbstractElementVisitor7<R, P>

--------------------------------
javax/lang/model/util/AbstractTypeVisitor6
public R visitIntersection(IntersectionType t, P p)

--------------------------------
javax/lang/model/util/AbstractTypeVisitor8
public abstract class AbstractTypeVisitor8<R, P> extends AbstractTypeVisitor7<R, P>

--------------------------------
javax/lang/model/util/ElementKindVisitor8
@SupportedSourceVersion(RELEASE_8) public class ElementKindVisitor8<R, P> extends ElementKindVisitor7<R, P>

--------------------------------
javax/lang/model/util/ElementScanner8
@SupportedSourceVersion(RELEASE_8) public class ElementScanner8<R, P> extends ElementScanner7<R, P>

--------------------------------
javax/lang/model/util/SimpleAnnotationValueVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleAnnotationValueVisitor8<R, P> extends SimpleAnnotationValueVisitor7<R, P>

--------------------------------
javax/lang/model/util/SimpleElementVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleElementVisitor8<R, P> extends SimpleElementVisitor7<R, P>

--------------------------------
javax/lang/model/util/SimpleTypeVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleTypeVisitor8<R, P> extends SimpleTypeVisitor7<R, P>

--------------------------------
javax/lang/model/util/TypeKindVisitor8
@SupportedSourceVersion(RELEASE_8) public class TypeKindVisitor8<R, P> extends TypeKindVisitor7<R, P>

--------------------------------
javax/tools/StandardLocation
NATIVE_HEADER_OUTPUT

--------------------------------
javax/tools/annotation/GenerateNativeHeader
@Documented @Target(TYPE) @Retention(SOURCE) public @interface GenerateNativeHeader

2013. január 1., kedd

Játékok: vegyesvágott kaland

Deponia

Metacritic: 74

A Daedalic Entertainment point-and-click kalandjátéka, amit a nemrég megjelent Chaos on Deponia kapcsán vettem meg. Érdekes és humoros játék, viszont jó párszor bele kellett néznem a végigjátszásba. Az Achievementek relatíve egyszerűek voltak. Aki ismeri a The Whispered World játékukat, az most fellélegezhet, mert vége a végtelen dumának és a számtalan kattintható helyszínnek. Az irányítás egyszerűbb, mert elég az egér két gombjával utasításokat adni (akció+megnéz). Elsőre kb. 10 órába tellett, másodikra, a Droggleljug teljesítményhez már csak 1 óra kellett.

Értékelés: 80%

Chaos on Deponia


Metacritic: 79

Némiképp fejlődött az előző részhez képest. Továbbra is vicces és érdekes, de pl. az Achievementek harmada már korántsem olyan triviális. 12 óra játék után még 10 db hiányzik. Összességében jó sorozat, és amint megjelenik az utolsó, Good bye Deponia, érdemes mindhármat egy csomagban megvenni, és kijátszani.

Értékelés: 85%

A New Beginning: Final cut


Ugyanattól a Daedalic Entertainment-től származik, de egy Deponia-nál korábbi játékuk, ráadásul konzolról hozták át. Ha játszottál a Deponia sorozattal, könnyen felismered a főhősnő rajzolatát (bár szerintem kicsit furcsán áll a lába.) Érdekes történet, puzzle-ök. Az Achievementek relatíve értelemszerűek, bár néha nehéz volt előre eldönteni, hogy most történet függő-e (90%), vagy speciális, újratöltést vagy újrajátszást ígényel. Nem rossz, de azért inkább leárazáskor érdemes megvenni. A vezérlés talán egy kicsit körülményes, mert 4 slotnyi akció lehetséges, amint a cél fölötti némi egérgomb lenyomva tartással lehet előhívni, á la The Whispered World. A Deponia irányítása jobban feküdt nekem.

Értékelés 75%

Lost Horizon


Ez viszont már egy másik bandától van: Deep Silver, amit a Secret Files sorozatból lehet ismerős. A SF 3 előrendelésekor kaptam meg, meg is feletkeztem róla. Meglepően messzire jutottam benne, talán a korábbi játékokban szerzett friss tapasztalatnak köszönhetően, mielőtt a végigjátszáshoz kellett nyúlnom. Achievementek nincsenek benne.

Értékelés 75%

2012. szeptember 29., szombat

Kickstarter: Nexus 2

If you liked Nexus: The Jupiter Incident, here is a good news. The developers of the game started a Kickstarter campaign. The $650,000 seems to be a longshot, but worth a proper pledge, especially if you pirated Nexus 1 ;)

http://www.kickstarter.com/projects/mostwanted/nexus-2-the-gods-awaken

BTW, Most Wanted Entertainment & HD Interactive gave us Joint Task Force, one of my all-time favorite tactical combat game.

2012. augusztus 14., kedd

Open Imperium Galactica 0.95.040 kiadása

Elkészítettem az Open Imperium Galactica következő kiadását. A Launcher-t elindítva máris frissül a játék.

Emellett még készítettem két kérdéssort (angolul és magyarul), aminek kitöltésével segíthetsz a munkánkban:

Angolul

Magyarul

Elegendő csak az egyiket kitölteni.

2012. augusztus 11., szombat

Preliminary: Legends of Pegasus

This is just a preliminary of a "concurrent" 4x turn based space strategy game just released: Legends of Pegasus.

Practically unplayable. Crashes, no-progression bugs, unresponsive UI and ships, bad tutorial, tiny font. I'll have to wait for a few patch turns. So many obvious bugs, I wonder how these could have get past testing? - Oh wait! Open-IG had several of such bugs! - Yes, but many got fixed within a few hours, and, my game is free. €40 is kind of an expensive.

Lessons for Open-IG so far: have a proper tutorial.

2012. augusztus 5., vasárnap

Endless Space


(Metacritic: 79%)

Summary: Nice looking game, but I failed to win on newbie...

Endless Space is one of the latest stream of indie 4x space strategy games building on the gameplay of Master of Orion 2's turn based-slider adjusting gameplay. I'm personally not a fan of such turn based strategy games due the inherent difficulty: the AI seems to know and work along an optimal path whereas you are left with either exploratory play or strategy guides.

The first disappointment was the way the tutorial is presented. No voiceover (as usual) and presented as a screenshot of the selected screen and several text bullet points to its right. Maybe if the bullet points were applied in the actual gameplay window... At first, it was a bit difficult to remember each option, but as I played, almost every screen and function felt well polished.

One thing I missed is the ability to jump to the next and previous star system from within a system view. I had to jump back to the galaxy view or open the systems from the empire view listing.

The tooltips were well placed and very informative. The technology tree was intriguing and very diverse, although it would take a very long time or very large galaxy to research every bit of it within an acceptable amount of real time.

Galaxy- and empire-wide events were good ideas, although annoying sometimes.

The AI seems to be more challenging than the difficulty settings would suggest. I've seen reports about the AI winning easily with economic victory or total points. I thought I could win by military strength, but it soon turned out to be problematic. The AI had at least 25 fleets with the strength quarter of my forces, but they were constantly pounding on each of my fleets until destruction. Early colonization and expansion is penalized by the game and it may take long time to make all kinds of planets colonizable.

The music is acceptable, although sometimes too high pitched. The graphics is okay, maybe a bit fancy on the system view. I played all my battles on auto, so no comment on the simplistic card-based battles.

Conclusion: 70%. Maybe I'll play it one day again.

Once I've finished the Beta-2 of Open Imperium Galactica, I'll try the next of such games I have purchased recently: Galactic Civilizations 2.


2012. július 28., szombat

Midnight Mysteries: Devil on the Mississippi battleship minigame solver

(I'm a bit behind in my games both bought and self-developed.)

I've been playing with the Midnight Mysteries series lately and I've come across a nice battleship-like minigame with an associated achievement: find all ship parts without missing a hit (called "Dead Eye").

  Battleship minigame

 I have created a brute-force algorithm to solve this randomly generated puzzle. The algorithm sequentially modifies coordinates until the given layout matches the given coverage numbers.

 Two considerations:

1) The algorithm may find multiple, same looking solutions when two or three of the same kind appears in a row or column;

2) sometimes, multiple distinct solutions may exist without any safe shots. In the example below, two horizontal 2 length ships can be present at either (0, 4)+(2, 3) or (0, 3)+(2, 4). A safe shot would be to put one at (0, 4) and then see the graphics indicate if this is the beginning or end of the ship.

Code @ GitHub