B4J Changelog

What's new in B4J 10.00

Oct 16, 2023
  • For Each iterator works with Java HashMap and other non-standard maps.
  • Image.WriteToStream disposes resources properly.
  • IDE shortcut to go to a layout file: 'ide://goto?Layout=MainPage
  • New #ModuleVisibility attribute. Value can be Public - default visibility, or B4XLib. B4XLib means that the module methods and fields will not be visible once the module is packed as a b4xlib. Note that it is an IDE feature and is ignored by the compiler (might be changed in the future).
  • B4XView.Alpha / SetAlphaAnimated property and method.
  • B4XLibs modules and files can be overridden. This is done by adding the module or file to the project. The compiler now accepts it and gives higher precedence to the project files.
  • Debugger improvements including performance improvements and bug fixes.
  • Ctrl + Alt + W closes the current code window.
  • OBFUSCATED automatic conditional symbol - note that it is set at compilation time, never during editing.
  • Internal libraries updated since last version released: B4XFormatter v1.04, BCTextEngine v1.95, Xml2Map v1.01, SimpleMediaManager v1.14, jOkHttpUtils2 v3.03, B4XPages v1.12, DesignerUtils v1.04
  • Bug fixes and other minor improvements.

New in B4J 9.80 (Jul 5, 2022)

  • The new version includes support for an important new feature - designer scripts extensions.

New in B4J 9.50 (Apr 28, 2022)

  • This is the first 64-bit version of B4X IDE. The new version will be installed in "program files" and not in "program files (x86)". It is not a must but it is recommended to uninstall B4J before installing the new version.
  • Other improvements:
  • TextField (and B4XView) - text alignment.
  • RUNTIME conditional symbol - this is an automatic symbol that is added during compilation. It can be used to exclude code from the IDE case-corrector.
  • Bug fixes, including a fix for a bug in the logs that caused the IDE to misfunction.

New in B4J 9.30 (Nov 2, 2021)

  • Long hex literal numbers: 0xff00ff00ff00
  • New methods: Bit.OrLong / AndLong / XorLong / ShiftLeftLong / ShiftRightLong / NotLong / UnsignedShiftRightLong / ParseLong
  • Fix the "incompatible types" warning with the relatively new Json type.
  • Json.ToCompactString method.
  • Several debugger fixes: crash on startup, missed assignments in some cases, single field objects were not always observable.
  • Code editor jumps to a sub when adding an event with the designer, including when the sub already exists.
  • LogColor and "jump to line" feature
  • SimpleMediaManager is included as an internal library.
  • Updated internal libraries: jCore (9.30), Json (1.21), B4XPreferencesDialog (1.74), BCTextEngine (1.92), XUI Views (2.53), KeyValueStore (2.31), jRandomAccessFile (2.34)
  • Bug fixes and other minor improvements

New in B4J 9.10 (Jul 13, 2021)

  • This update adds two new language features:
  • IIf - Inline If, also called ternary if as it is an operator with three arguments.
  • As - Inline casting. Allows inline casting from one type to another. Some examples:

New in B4J 9.00 (Jun 3, 2021)

  • IDE performance - several cases where the typing speed became slow were fixed. The speed difference in those cases is significant.
  • #PackagerProperty can be used multiple times with the same key.
  • Internal packager supports packaging non-ui apps (windows only for now). The size of a zipped non-ui package is around 14mb.
  • File.DirData / XUI.DefaultFolder on Mac point to ~/Library/Application Support/[AppName] where AppName is the value set with XUI.SetDataFolder. This is similar to the behavior in Windows.
  • It is required when running packed apps.
  • b4xlibs - manifest file supports an Extra field. The value is a single line json string. For now it is used in B4J to add #PackagerProperty attributes automatically. It will be used for other features in the future. See XLUtils.b4xlib for an example.
  • Fixed several cases where javafx.web module was required even when not using WebView.
  • Add existing modules dialog - option to copy module(s) to parent folder.
  • New "before packager" custom build action step.
  • Other bug fixes and minor improvements.

New in B4J 8.90 (Feb 11, 2021)

  • This update adds support for the new online libraries index

New in B4J 8.80 (Dec 14, 2020)

  • Libraries tab improvements.
  • Indicators to help understand the code flow with resumable subs.
  • IDE performance improvements related to handling of b4xlibs.
  • The deprecated jHttp and jHttpUtils2 libraries were removed.
  • OkHttp updated.
  • JavaCompilerPath attribute. Allows setting a JDK other than the one set in the global settings. Syntax: <java version>, <path to javac.exe>. The exact version isn't important.
  • CustomBuildAction - direct support for jar files, including Java 11+ UI jars.
  • Many internal libraries were updated including: B4XDrawer, B4XPages, B4XCollections, XUI Views and jFX.
  • New internal libraries: KeyValueStore, BCToast
  • Bug fixes and other minor improvements.

New in B4J 8.50 (Jul 13, 2020)

  • Similar threads:
  • B4A Library [B4X] XUI Views - Cross platform views and dialogs
  • B4A Tutorial [B4X] B4XPages - Cross platform and simple framework for managing multiple pages
  • B4A Tutorial [B4X] Projects Templates
  • B4A Tutorial [B4X] Comment Links
  • Other B4J v8.30 is available for download
  • B4A Tutorial [B4X] Input dialogs with XUI Views

New in B4J 8.31 (Jun 15, 2020)

  • This update includes several bug fixes and updates to internal libraries.
  • New internal libraries: B4XPages, PreoptimizedCLV, B4XPreferencesDialog and X2.

New in B4J 8.10 (Jan 29, 2020)

  • IDE shows messages about updates (screenshot from B4A).
  • Better handling of errors in the IDE.
  • Positions and layouts of all windows are preserved.
  • Search results font can be configured from Tools - IDE Options - Font Picker.
  • Fixes for several bugs in find all references and search features.

New in B4J 7.80 (Sep 11, 2019)

  • Improvements:
  • Support for copying and pasting controls between the platforms
  • Ctrl + Click in the designer script to select the control.
  • Anchors checker: https://www.b4x.com/android/forum/threads/new-feature-anchors-checker.108805/
  • Generate B4XViews from the designer. Also supports changing the type of already declared variables.
  • Improved tool tips, add views from the views tree and other small improvements and bug fixes in the designer.
  • Empty lines will not be copied to the clipboard.
  • Regions are listed in the subs list:

New in B4J 7.50 (Dec 31, 2018)

  • b4x libraries:
  • [new feature] b4x library - a new type of library
  • XUI Views: [B4X] XUI Views - Cross platform views and dialogs
  • X2 games framework: [B4X] X2 / XUI2D (Box2D) - Game engine
  • Auto-backups: https://www.b4x.com/android/forum/threads/new-feature-auto-backups.100010
  • ​IMG:
  • Support for compiling libraries with Java 11.
  • Debugger improvements:
  • Fix for issue where resumable sub could show the wrong value for a global variable.
  • Fix for issue where the error message points to the wrong module.
  • Other bug fixes and minor improvements.

New in B4J 6.51 (Sep 14, 2018)

  • Fixes a regression bug related to #CustomBuildAction.

New in B4J 6.30 (Jul 18, 2018)

  • Resumable subs in debug mode are optimized in the same way other subs are optimized.
  • Starter service is never destroyed until the process is killed - if you carefully read the automatic foreground notifications tutorial then you should be aware to a significant behavioral change in Android 8+. The OS kills services while the app is in the background. In previous versions the OS never killed specific services (only the complete process). This change made it much more difficult to work with the starter service as you could no longer assume that the starter service is running.
  • Starting from B4A v8.3 the starter service will never be paused until the process is killed. Internally it switches from the service context to the application context.
  • Several other important debugger optimizations.
  • Bit.ArrayCopy method. Same as ByteConverter.ArrayCopy.
  • New File methods: CopyAsync, Copy2Async, ReadBytes, WriteBytes and ListFilesAsync.
  • Support for Java 8 jars and AARs.
  • Ctrl + Click on class types and custom types.
  • Autocomplete improvements.
  • Autocomplete in CallSub methods
  • B4A Sdk Manager v3.27 - Supports Java 10.
  • Files can be added to groups directly.
  • For loops optimization (in release mode).
  • BitmapCreator v3.60 is included as an internal library.
  • xCustomListView v1.63 is included as an internal library.
  • XUI v1.70 is included as an internal library. This is a large update to XUI library with support for text measurements and other features.
  • Phone.ShellAsync - Asynchronous version of Phone.Shell.
  • Bug fixes and other minor improvements.

New in B4J 6.30 Beta 1 (May 15, 2018)

  • Debugger optimizations, mainly with resumable subs.
  • jServer v3.00 is included. Jetty, the underlying open source project, was updated from 9.4.6 to 9.4.10. This is a large update for Jetty with many bug fixes and improvements. jServer can now work with Google Conscrypt as the SSL engine. This provides better performance and makes it very simple to configure Http/2.
  • File: CopyAsync, Copy2Async, ReadBytes, WriteBytes, ListFilesAsync.
  • Node: MouseEntered and MouseExited events.
  • Node: PickOnBounds property - sets whether mouse events are intercepted based on the bounds or the non-transparent region.
  • Pane_Touch event - The Touch event is an alternative to the various mouse events. Its signature is the same as B4A and B4i Panel_Touch event.
  • jControlsFX9 - Fix for notifications.
  • MenuItem / Menu - ParentMenu property.
  • Bit.ArrayCopy - Same as ByteConverter.ArrayCopy.
  • XUI v1.70:
  • B4XCanvas: DrawPath, DrawPathRotated and MeasureText.
  • B4XView: TOUCH_ACTION constants for the Touch events.
  • XUI: Scale property. Always 1 in B4i and B4J. Same as 100dip / 100 in B4A.
  • B4XBitmap: Scale property. Always 1 in B4i and B4J. Same as Bitmap.Scale in B4A.
  • Custom class templates. Any library can add class templates.
  • jBitmapCreator v3.11 and xCustomListView v1.62 are included as internal libraries.
  • IDE:
  • Ctrl + Click on class types and custom types.
  • Autocomplete improvements.
  • Bug fixes and other minor improvements.

New in B4J 6.01 (Jan 3, 2018)

  • Several important components were rewritten to provide more features and better performance:
  • Visual designer properties grid
  • Visual designer views tree
  • Modules tree (new component)
  • Files tree
  • The major improvements are:
  • Code modules can be loaded from other folders and can be easily shared between projects (including projects targeting other platforms): https://www.b4x.com/android/forum/threads/b4x-modules-files-groups-and-folders.86587/
  • Modules and file tree support grouping:
  • Modules are monitored for external changes.
  • Files tree shows the files icons and allows opening the files with external editors: https://www.b4x.com/android/forum/threads/b4x-external-editors.86592/
  • Modules, files and views can be renamed directly from the relevant tree.
  • Full support for drag and dropping files and modules, including support for dragging multiple items.
  • B4A services and activities can be shared with B4J. They will be treated as static code modules.
  • New options when adding modules:
  • Copy to folder: Copies the module to the project folder (same as the current behavior).
  • Link - relative path: Adds a link to the module with a relative path. Useful when the folder is under or close to the project folder.
  • Link - absolute path: Adds a link to the module with an absolute path.
  • Deleted files are moved to the recycle bin.
  • Properties grid and views tree can be filtered.
  • Properties grid is much faster and includes new types of editors:
  • Better support for version control. Files are only written when the contents are actually changed.
  • The modules internal attributes are sorted in lexicographical order to reduce changes.
  • Button Click event. The new event replaces the Action event. The Action event still works but doesn't appear in the autocomplete list. The Click event is the same as in B4A and B4i.
  • Previous animations are cancelled when a new animation of the same type starts. This behavior is similar to the behavior in B4A and B4i and it makes it much simpler to work with animations.
  • jXUI library is now an internal library.
  • Debugger hover window is resizable.
  • Add New Modules / Existing modules menu items in modules tree.
  • Code editor color picker is based on the designer color picker.
  • Open file with default program in Files tree. Also works with double click.
  • Support for opening multiple files at once.
  • Better handling of locked files.
  • Bug fixes and other minor improvements.

New in B4J 6.00 (Dec 6, 2017)

  • Visual designer properties grid
  • Visual designer views tree
  • Modules tree (new component)
  • Files tree

New in B4J 5.90 (Sep 5, 2017)

  • This update adds support for resumable subs that return values =
  • Other improvements:
  • Improvements to auto-complete and auto-format features.
  • #CustomBuildAction 3 - after library creation.
  • OkHttpUtil2 / OkHttpUtil2_NONUI libraries updated to v2.62 (source code: https://www.b4x.com/android/forum/threads/b4x-okhttputils2-ihttputils2-httputils2-source-code.82632)
  • Bug fixes.

New in B4J 5.82 (Jul 27, 2017)

  • The underlying server library (Jetty) was updated to the latest version (9.4.6). This is a major upgrade.
  • Note that due to security issues, weaker versions of SSL are disabled by default (TLS 1.0 and TLS 1.1). It is possible to re-enable them if needed.
  • New TreeTableView. A combination of TreeView and TableView.
  • Improvements to the layout loading process. It is a bit faster and more flexible (it will be used in the future for a planned cross platform helper library).
  • Fixes the localization bug discussed in post #5 and a bug in the debugger.
  • The auto-complete popup remembers the last choices and preselects them when relevant.

New in B4J 5.80 (Jul 20, 2017)

  • This is the first version of the IDE that is localizable.
  • The underlying server library (Jetty) was updated to the latest version (9.4.6). This is a major upgrade.
  • Note that due to security issues, weaker versions of SSL are disabled by default (TLS 1.0 and TLS 1.1). It is possible to re-enable them if needed.
  • New TreeTableView. A combination of TreeView and TableView.
  • Improvements to the layout loading process. It is a bit faster and more flexible (it will be used in the future for a planned cross platform helper library).

New in B4J 4.00 (Dec 23, 2015)

  • UI Apps:
  • DatePicker control
  • SplitPane
  • Msgbox, Msgbox2, InputList
  • Shadows (designer feature)
  • Support for right to left orientations.
  • ContorlsFX library was updated.
  • Server solutions:
  • Support for Http/2
  • Server library updated to latest version of Jetty
  • Other:
  • Debugger performance improvements.
  • IDE bug fixes.

New in B4J 3.50 (Aug 8, 2015)

  • Internal Visual Designer

New in B4J 3.00 (Aug 8, 2015)

  • New IDE with many improvements.

New in B4J 2.80 (Aug 8, 2015)

  • Support for inline Java code
  • New Smart String literal - http://www.b4x.com/android/forum/threads/b4x-smart-string-literal.50135/
  • Command line builder - http://www.b4x.com/android/forum/threads/b4abuilder-b4jbuilder-command-line-compilation.50154/
  • Files list supports drag & drop.
  • Clean project option also refreshes the libraries list. Can be accessed with a new shortcut (Ctrl + P).
  • New warning for invalid code in the globals subs.
  • Class properties are listed in the Find All References tool (F7).

New in B4J 2.50 (Aug 8, 2015)

  • Code obfuscation (same as in B4A).
  • Rapid debugger memory handling was rewritten to provide better performance and to avoid memory leaks.
  • Support for constants: Dim Const x As Int = 2
  • New animation methods: SetLayoutAnimated and SetAlphaAnimated
  • IsDevTool keyword.
  • Libraries list - Checked libraries are listed at the top of the list.
  • Duplicate line shortcut - Ctrl + D.
  • AutoComplete shortcut - Ctrl + \ (same as Ctrl + Space).
  • Hide other modules option when right clicking on the module header.
  • CurrentStatement and breakpoints colors are configurable in the xml file.
  • New logo.

New in B4J 2.20 (May 20, 2014)

  • New features and improvements:
  • Conditional Compilation & Build Configurations
  • Shared code modules
  • Project meta file - This file stores "dynamic" project state: modules visibility and order, collapsed nodes, bookmarks and breakpoints. This file should be excluded from source controls.
  • Array keyword - The type can be omitted. In that case the array type will be Object. The Array keyword now supports creating empty arrays.
  • Debugger can optionally show hexadecimal values.
  • Auto complete for layouts and assets files.
  • Libraries filter box.
  • Server - Correct mime types are set based on the file extension.
  • jSQL - Fix for a potential memory leak.
  • JQueryElement.SetProp method fixed.
  • HttpSession.RemoveAttribute was mistakenly named RemoteAttribute. The method name is fixed.
  • Add existing modules supports multiple selection.
  • Other minor improvements

New in B4J 1.50 (Feb 3, 2014)

  • Support for web servers
  • Support for Raspberry Pi computers (and other Linux ARM boards
  • New types of nodes: ScrollPane and ProgressBar
  • TableView - single cell selection mode
  • MenuItem.Visibile property
  • FocusChanged event added to most nodes
  • ListView.ScrollTo method
  • Http library authentication mode was fixed
  • StopMessageLoop keyword (relevant in server applications)
  • #MergeLibraries attribute - Allows skipping of the merging step in Release mode